Cho một trường;Lựa chọn trường mô hình Django - sẽ không phải là một quyết định tốt hơn?
domain_status_choices = (
(1,'Live')
(2,'Offline')
(3,'Dev')
)
status = models.SmallIntegerField(choices=domain_status_choices)
Tôi biết tôi có thể nhận và đặt biểu diễn dạng số và sử dụng get_status_display()
để nhận nhãn văn bản. Nhưng nếu người dùng đăng status=Offline
thì tôi có thể lấy giá trị số để lưu nó như thế nào? Tôi cũng muốn có thể xác nhận rằng các số hoặc giá trị văn bản nằm trong danh sách.
Với tôi, điều đó có ý nghĩa hơn khi sử dụng dict. Đây là phương pháp hiện tại của tôi;
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]
Có cách nào tốt hơn không? Tại sao một bộ tuple thường được sử dụng?
bạn đã thử sử dụng collections.OrderedDict đối với trường hợp sử dụng này? (Để duy trì trật tự của các tùy chọn.) Http://pymotw.com/2/collections/ordereddict.html –