Django-EnumFields让你在Django中组合枚举字段(线索在标题中)。
你能把这些结合起来吗?
以下是播放docs:
的示例from django.db import models
from django_enumfield import enum
class BeerStyle(enum.Enum):
LAGER = 0
STOUT = 1
WEISSBIER = 2
class SoftDrinkStyle(enum.Enum):
COKE = 3
LEMONADE = 4
class Drink(models.Model):
style = enum.EnumField(????, default=BeerStyle.LAGER)
我不知道代替????
会有什么用,或者是否有更好的方法让这个嵌套/组合与Django一起玩。我主要问的是我想要Enum行为,能够探测不同的类型,例如:在保存方法中,如果饮品是User
,请检查Beer
年龄。
这可能吗?玩了一会儿,我看不出来。
答案 0 :(得分:2)
了解了Python Enums的工作原理,这似乎是模拟“子类”
的最佳行为from django.db import models
from django_enumfield import enum
class DrinkStyle(enum.Enum):
LAGER = (0, 'Beer')
STOUT = (1, 'Beer')
WEISSBIER = (2, 'Beer')
COKE = (3, 'SoftDrink')
LEMONADE = (4, 'SoftDrink')
def __init__(self, id, drink_type):
self.id = id
self.type = drink_type
@property
def type(self):
return self.drink_type
class Drink(models.Model):
style = enum.EnumField(DrinkStyle, default=DrinkStyle.LAGER)
然后使用DrinkStyle.COKE.type
返回类型。