我有一個Django字段,我基本上用作通知首選項的枚舉。使用Django ModelField選項作爲字符串 - 反模式?
現在我有它設置就像這樣:
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
,但是由於前端採用角和數據全部通過API提供,我覺得它可能會爲前端提供更有用的信息,例如,接收'weekly'
而不是2
。
是它認爲是不好的做法是使用CharField
作爲一個枚舉?如果是這樣,我的用例足夠小,這不是什麼大不了的事,或者有什麼我錯過了,我應該改變它?
更Python做你的頻率變量的元組分配:'EVERY_TIME,每週,NEVER =「每一個」,「周」,「never'' – hobs