【发布时间】:2014-07-10 05:40:02
【问题描述】:
我有一个 Django 字段,基本上用作通知首选项的枚举。
现在我的设置是这样的:
class MyModel(models.Model):
# ...
EVERY_TIME = 'every'; WEEKLY = 'weekly'; NEVER = 'never'
NOTIFICATION_CHOICES = ((EVERY_TIME, "Every time"), (WEEKLY, "Weekly"), (NEVER, "Never"))
notification_preferences = models.CharField(choices=NOTIFICATION_CHOICES, default=EVERY_TIME, max_length=10)
我知道一般这种枚举应该设置为models.IntegerField而不是CharField,但是由于前端使用Angular并且数据都是通过API提供的,我觉得它可能例如,为前端接收'weekly' 而不是2 提供更多有用的信息。
使用CharField 作为枚举是否被认为是不好的做法?如果是这样,我的用例是否足够小以至于没什么大不了的,还是我缺少一些我应该改变它的东西?
【问题讨论】:
-
更多 pythonic 对频率变量进行元组分配:
EVERY_TIME, WEEKLY, NEVER = 'every', 'weekly', 'never'