gpt4 book ai didi

python - Django 数据表和枚举

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:59 28 4
gpt4 key购买 nike

我有一个广告系列模型如下:

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

并以某种方式在同一列上使用它们。但不确定该怎么做。

我想使用枚举,因为我需要其他用途以便在代码中轻松使用它。例如:

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,你有几个选择:

  • 使用嵌套的 Enum 类(参见 https://stackoverflow.com/a/35886825/208880 )
  • 使用两个类并让您的实现在它们之间进行选择(这将需要在名称中嵌入 FaceBook 或 Twitter 代码,例如 FB_ 和 TW_,或者在两个 Enum 中使用唯一的名称所以你可以在从 db 到 Python 时反转查找)

This answer可能有助于了解细节。

关于python - Django 数据表和枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39435418/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com