जब आपके पास एक विकल्प विकल्प के साथ एक मॉडल फ़ील्ड होता है, तो आपके पास मानव पठनीय नामों से जुड़े कुछ जादू मूल्य होते हैं। क्या Django में मान के बजाय मानव पठनीय नाम से इन क्षेत्रों को सेट करने का एक सुविधाजनक तरीका है?
इस मॉडल पर विचार करें:
class Thing(models.Model):
PRIORITIES = (
(0, 'Low'),
(1, 'Normal'),
(2, 'High'),
)
priority = models.IntegerField(default=0, choices=PRIORITIES)
कुछ बिंदु पर हमारे पास एक थिंग उदाहरण है और हम इसकी प्राथमिकता निर्धारित करना चाहते हैं। जाहिर है आप कर सकते हैं,
thing.priority = 1
लेकिन यह आपको प्राथमिकताओं के मूल्य-नाम मानचित्रण को याद करने के लिए मजबूर करता है। यह काम नहीं करता है:
thing.priority = 'Normal' # Throws ValueError on .save()
वर्तमान में मेरे पास यह मूर्खतापूर्ण काम है:
thing.priority = dict((key,value) for (value,key) in Thing.PRIORITIES)['Normal']
लेकिन यह क्लूनी है। यह देखते हुए कि यह परिदृश्य कितना सामान्य हो सकता है मैं सोच रहा था कि किसी के पास बेहतर समाधान हो। क्या चुनाव नाम से फ़ील्ड सेट करने के लिए कुछ फ़ील्ड विधि है जिसे मैंने पूरी तरह से अनदेखा कर दिया है?