Python Django数据表和枚举

Python Django数据表和枚举,python,django,enums,Python,Django,Enums,我的竞选模式如下: 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(def

我的竞选模式如下:

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活动

objective字段是一个自由文本,但我对它不满意

我想创建两个不同的枚举(枚举34):

然后在同一列中使用它们。但不知道怎么做

我想使用enum,因为我需要其他的用法来在代码中轻松地使用它。e、 g:

TwitterObjective.VIDEO_VIEWS_PREROLL
据我所知(就Django而言,这并不多),要实现这一点,您需要为每个字段使用一个
Enum
。因此,在您的情况下,我会将Twitter或FB名称放在会员的名称中:

Class Objective(Enum):
    FB_MOBILE_APP_ENGAGEMENT
    FB_MOBILE_APP_DOWNLOAD
    TW_VIDEO_VIEWS_PREROLL
    TW_TWEET_ENGAGEMENTS
如果您确实想使用不同的
Enum
s,您有两个选择:

  • 使用嵌套的
    Enum
    类(请参阅)
  • 使用两个类并让您的实现在它们之间进行选择(这需要在名称中嵌入FaceBook或Twitter代码,例如FB_uu和TW_u,或者在两个
    Enum
    s中使用唯一的名称,以便在从db转到Python时可以反转查找)

可能会对细节有所帮助。

是的,但我试图用另一种方式解决它。谢谢。如果我使用嵌套枚举,它可以与django模型一起工作吗?@Dejell:我不知道。我说我对Django不太了解,这不是开玩笑。
Class Objective(Enum):
    FB_MOBILE_APP_ENGAGEMENT
    FB_MOBILE_APP_DOWNLOAD
    TW_VIDEO_VIEWS_PREROLL
    TW_TWEET_ENGAGEMENTS