Created
November 7, 2022 15:37
-
-
Save dominusmi/e616e517e17fe750d9b1595bfe62678b to your computer and use it in GitHub Desktop.
Peewee EnumField (custom field type based on IntegerField)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import enum | |
from abc import ABC | |
from peewee import IntegerField | |
class EnumField(IntegerField, ABC): | |
""" | |
This class enable an Enum like field for Peewee | |
""" | |
def __init__(self, enum: Type[enum.Enum], *args, **kwargs): | |
super(IntegerField, self).__init__(*args, **kwargs) | |
self.enum = enum | |
def db_value(self, value): | |
return value.value | |
def python_value(self, value): | |
return self.enum(value) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment