我的广告系列模型如下:
id campaign objective platform
1 Hello Word MOBILE_APP_ENGAGEMENT Facebook
2 Hi There VIDEO_VIEWS_PREROLL Twitter
型号:
class Campaign(Model):
id = models.TextField(primary_key=True)
name = models.TextField(default="")
objective = models.TextField(null=True)
platform = enumfields.EnumField(Platform, max_length=10, null=True)
该广告系列包含Twitter和FB广告系列。
客观字段是一个自由文本,但我对它不满意。
我想创建2个不同的枚举(enum34):
class FacebookObjective(Enum):
MOBILE_APP_ENGAGEMENT
MOBILE_APP_DOWNLOAD
class TwitterObjective(Enum):
VIDEO_VIEWS_PREROLL
TWEET_ENGAGEMENTS
并以某种方式在同一列上使用它们。但不知道该怎么做。
我想使用枚举,因为我需要其他用法在代码中轻松使用它。 e.g:
TwitterObjective.VIDEO_VIEWS_PREROLL
答案 0 :(得分:1)
据我所知(Django所关注的并不多),为了完成这项工作,你需要在每个字段中使用一个Enum
。因此,在您的情况下,我会将Twitter或FB名称放在成员的名称中:
Class Objective(Enum):
FB_MOBILE_APP_ENGAGEMENT
FB_MOBILE_APP_DOWNLOAD
TW_VIDEO_VIEWS_PREROLL
TW_TWEET_ENGAGEMENTS
如果你真的想使用不同的Enum
,你可以选择几个:
Enum
类(请参阅https://stackoverflow.com/a/35886825/208880)Enum
中使用唯一的名称,这样您就可以从db转到Python时反转查找)This answer可能有助于细节。