Django datatable and enum
我的竞选模式如下:
1 2 3 | id campaign objective platform 1 Hello Word MOBILE_APP_ENGAGEMENT Facebook 2 Hi There VIDEO_VIEWS_PREROLL Twitter |
模型:
1 2 3 4 5 | 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活动。
目标字段是一个自由文本,但我对此不满意。
我想创建两个不同的枚举(Enum34):
1 2 3 4 5 6 7 | class FacebookObjective(Enum): MOBILE_APP_ENGAGEMENT MOBILE_APP_DOWNLOAD class TwitterObjective(Enum): VIDEO_VIEWS_PREROLL TWEET_ENGAGEMENTS |
在同一列中使用它们。但不知道怎么做。
我想使用枚举,因为我需要在代码中使用它。例如:
1 | TwitterObjective.VIDEO_VIEWS_PREROLL |
。
据我所知(Django不太关心),要实现这一点,您需要在每个字段使用一个
1 2 3 4 5 | Class Objective(Enum): FB_MOBILE_APP_ENGAGEMENT FB_MOBILE_APP_DOWNLOAD TW_VIDEO_VIEWS_PREROLL TW_TWEET_ENGAGEMENTS |
如果您真的想使用不同的
- 使用嵌套的
Enum 类(参见https://stackoverflow.com/a/35886825/208880) - 使用两个类并让您的实现在它们之间进行选择(这需要在名称中嵌入facebook或twitter代码,例如fb_u和tw_u,或者在两个
Enum 中使用唯一的名称,这样在从db到python时可以反向查找)。
小精灵
这个答案可能对细节有所帮助。