Jak*_*ake 12 python django django-models
给定一个领域;
domain_status_choices = (
(1,'Live')
(2,'Offline')
(3,'Dev')
)
status = models.SmallIntegerField( choices=domain_status_choices )
Run Code Online (Sandbox Code Playgroud)
我知道我可以获取并设置数字表示并用于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]
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?为什么通常使用元组元组?
vic*_*vic 14
我相信dict的键不能保证排序(除非你OrderedDict
明显使用).也就是说,您"可能"在您的版本中获得"离线","开发","实时"选择.
关于dict.items的实施说明:
键和值以任意顺序列出,这是非随机的,在Python实现中各不相同,并且取决于字典的插入和删除历史.
归档时间: |
|
查看次数: |
5578 次 |
最近记录: |