python - Django 模型字段选择 - 听写不是更好吗?

标签 python django django-models

给定一个字段;

domain_status_choices = (
    (1,'Live')
    (2,'Offline')
    (3,'Dev')
)
status = models.SmallIntegerField( choices=domain_status_choices )

我知道我可以获取和设置数字表示并使用 get_status_display() 获取文本标签。但是,如果用户发布 status=Offline,我如何才能获取数值以保存它?我还希望能够验证列表中是否包含数字或文本值。

对我来说,使用字典更有意义。这是我目前的方法;

domain_status_choices = {
    1: 'Live',
    2: 'Offline',
    3: 'Dev',
}
status = models.SmallIntegerField( choices=domain_status_choices.iteritems() )
...
if input1 not in domain_status_choices.keys(): print "invalid"
if input2 not in domain_status_choices.items(): print "invalid"
status = [k for k, v in domain_status_choices.iteritems() if v == input3][0]

有没有更好的方法?为什么通常使用元组的元组?

最佳答案

我相信不能保证对字典的键进行排序(除非您显然使用 OrderedDict)。也就是说,您的版本“可能”获得“离线”、“开发”、“实时”选项。

关于 dict.items 的实现说明:

Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary’s history of insertions and deletions.

关于python - Django 模型字段选择 - 听写不是更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4698972/

相关文章:

python - Django:将 'choices' 从另一个数据库传递到 MultipleChoiceField

django - 如何获取模板中表单的外键值?

python - 如何通过识别python Hadoop中的键来处理Mapreduce

python - 导入错误: cannot import name 'MPRester' from 'pymatgen' (unknown location)

python - 使用具有现有数据库 ID 字段的 Django 问题

国际网站的 django localflavor

python - 如何在单个 Django 模型中存储任意类型的值?

django - django 理解 YML 吗? django 未加载固定装置 YML 文件(yml 不是已知的序列化)

python - python 从不同目录下的多个文件中读取特定数据

python - 在 Jupyter Notebook 中并行化绘图循环