Seçim seçeneği olan bir model alanınız olduğunda, insan tarafından okunabilir adlarla ilişkili bazı sihirli değerlere sahip olma eğilimindesinizdir. Django'da bu alanları değer yerine insan tarafından okunabilir ada göre ayarlamanın uygun bir yolu var mı?
Bu modeli düşünün:
class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)
priority = models.IntegerField(default=0, choices=PRIORITIES)
Bir noktada bir Thing örneğimiz var ve önceliğini belirlemek istiyoruz. Açıkçası yapabilirsin,
thing.priority = 1
Ancak bu sizi ÖNCELİKLERİN Değer-Adı eşlemesini ezberlemeye zorlar. Bu çalışmıyor:
thing.priority = 'Normal' # Throws ValueError on .save()
Şu anda bu aptalca çözümüm var:
thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
ama bu hantal. Bu senaryonun ne kadar yaygın olabileceği düşünüldüğünde, birinin daha iyi bir çözümü olup olmadığını merak ediyordum. Alanları seçim adına göre ayarlamak için tamamen gözden kaçırdığım bir alan yöntemi var mı?