フィールドを指定します。Djangoモデルのフィールドの選択 - dictは良くないでしょうか?
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]
良い方法はありますか?タプルのタプルが通常使用されるのはなぜですか?
あなたはこのユースケースのためcollections.OrderedDictを使用してみましたか? (オプションの順番を保つため)http://pymotw.com/2/collections/ordereddict.html –