मैं Django में कई-से-कई फ़ील्ड वैकल्पिक कैसे बनाऊं?


202

जब आपके पास कई-से-कई संबंध होते हैं (और related_name, नहीं through) और आप उस व्यवस्थापक इंटरफ़ेस का उपयोग करने की कोशिश कर रहे हैं, जो आपको रिश्तों में से एक में प्रवेश करने के लिए आवश्यक है, भले ही यह आपके लिए पहली प्रविष्टि बनाने के लिए मौजूद न हो।

मैं एक ऐप बना रहा हूं जो एक इवेंट ऑर्गनाइज़र है। कल्पना कीजिए कि हम था Eventऔर Groupमॉडल, कई-से-अनेक संबंध के साथ बंधे।

Django related_nameदो अन्य तालिकाओं के सूचकांकों के साथ एक और तालिका बनाता है।
लेकिन मुझे कोई कारण नहीं दिखता कि इस अतिरिक्त तालिका को आबाद क्यों किया जाए।

अगर मैं phpMyAdmin के माध्यम से डेटाबेस के साथ काम करता हूं, तो मैं एक Groupपंजीकरण के बिना बना सकता हूं Event, क्योंकि दोनों के बीच संबंध केवल एक अलग तालिका के माध्यम से है, और दिए गए स्तर पर डेटाबेस मूल्य प्रवर्तन नहीं है।

मुझे यह कैसे पता चलता है कि मैं इंटरफ़ेस इंटरफ़ेस कैसे बनाऊँ?
मैं Django में कई-से-कई फ़ील्ड वैकल्पिक कैसे बनाऊं?

जवाबों:


348

यदि आप इसे केवल उपयोग की आवश्यकता के बिना ManyToMany संबंध निर्दिष्ट करने में सक्षम होना चाहते हैं blank=True:

class Group(models.Model):
    ...
    events = models.ManyToManyField(Event, blank=True)

7
इससे समस्या का समाधान होता है। रिक्त का उपयोग करना मेरे लिए उतना स्पष्ट नहीं था क्योंकि मुझे लगा था कि कईटोमनी ने एक तालिका बनाई है जो घटनाओं को समूहों के साथ जोड़ती है (घटनाओं = मॉडल। ManyToManyField (घटना, संबंधित_नाम = "समूह", रिक्त = सत्य) इसलिए इसका उपयोग करना स्पष्ट नहीं था रिक्त चूंकि घटना वास्तव में समूह तालिका में एक क्षेत्र नहीं है। वैसे भी यह बहुत काम किया धन्यवाद !!!
डीजेड।

9
@omouse मुझे लगता है कि हाँ, रिक्त django सत्यापन के लिए है, और डेटाबेस के लिए रिक्त है। इस तरह के मामले में (जैसे कि इंटेगरफिल्ड के लिए) इसका कोई मतलब नहीं है कि मैं दूसरे के बिना एक सोच
रखूं

17
क्या आपको वास्तव में होना चाहिए null=True? मैं इस nullबात से प्रभावित था कि ManyToManyखेतों पर इसका कोई प्रभाव नहीं है : stackoverflow.com/questions/18243039/…
टायलर हेस

5
हाँ, उम @TylerHayes सही है। null = True मूल रूप से एक no-op है और एक ManyToMany के संदर्भ में निरर्थक है। मुझे दिखाया जा रहा है कि मैं कैसे गलत हूं।
बेन रॉबर्ट्स

7
null = True की आवश्यकता नहीं है, कम से कम Django 1.5 के बाद से।
विले लॉरिकारी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.