Saat Anda memiliki bidang model dengan opsi pilihan, Anda cenderung memiliki beberapa nilai ajaib yang terkait dengan nama yang dapat dibaca manusia. Apakah ada di Django cara mudah untuk menyetel bidang ini dengan nama yang dapat dibaca manusia alih-alih nilainya?
Pertimbangkan model ini:
class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)
priority = models.IntegerField(default=0, choices=PRIORITIES)
Di beberapa titik kami memiliki instance Thing dan kami ingin menetapkan prioritasnya. Jelas Anda bisa melakukannya,
thing.priority = 1
Tapi itu memaksa Anda untuk menghafal pemetaan Nama-Nilai PRIORITAS. Ini tidak berhasil:
thing.priority = 'Normal' # Throws ValueError on .save()
Saat ini saya memiliki solusi konyol ini:
thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
tapi itu kikuk. Mengingat betapa umum skenario ini, saya bertanya-tanya apakah ada yang punya solusi yang lebih baik. Apakah ada metode bidang untuk menyetel bidang dengan nama pilihan yang benar-benar saya abaikan?