मैं समझता हूं कि Django में, ORM doesn "tMySQL या PostgreSQL में ENUM प्रकार का समर्थन करें, क्योंकि यह मूल रूप से एक MySQL एक्सटेंशन था, और अन्य DB प्रकारों में पोर्टेबल नहीं था। तो दो विकल्प हैं अपने मॉडल के लिए "विकल्प" तर्क का उपयोग करना, या एक विदेशी कुंजी संदर्भ का उपयोग करना।
इन दृष्टिकोणों के पक्ष और विपक्ष क्या हैं?
लिंग जैसी किसी चीज़ के लिए, मुझे लगता है कि आप "विकल्प" का उपयोग करेंगे, उदा .:
GENDER_CHOICES = (
("M", "Male"),
("F", "Female"),
)
...
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
हालाँकि, राज्य के नामों जैसी किसी चीज़ के लिए, एक अलग तालिका का उपयोग करने और उस तालिका के लिए और विदेशी कुंजी के कारण क्या हैं?
state = models.ForeignKey(AustralianState)
आप किन परिस्थितियों में एक बनाम दूसरे का उपयोग करेंगे?
चीयर्स, विजेता
उत्तर:
जवाब के लिए 3 № 1आपको विदेशी चाबियों पर भी विचार करना चाहिएसंभावित विकल्पों की संख्या बड़ी है। देशों या राज्यों के लिए एफके का उपयोग करने पर विचार करने के कारणों में से एक। अन्यथा, आप अपने स्रोत कोड में बहुत सारे डेटा को प्रभावी रूप से हार्ड-कोडिंग कर रहे हैं।
उत्तर के लिए 14 № 2
मैं उन विकल्पों का उपयोग करता हूं जहां विकल्प समय के साथ नहीं बदलते हैं। यदि वे करेंगे, तो एक नए मॉडल के साथ एक एफके बेहतर होगा।