मेरे पास दो मॉडल श्रेणी और उत्पाद हैं।कई मॉडल के लिए एक विजेट को एक मॉडल में अनुकूलित करना जिसमें एक परिपत्र विदेशीकी है
- एक उत्पाद कई उत्पाद हो सकता है कई श्रेणियाँ
- एक श्रेणी हो सकता है।
- श्रेणियों में स्वयं के लिए एक गोलाकार विदेशी कुंजी है।
- नहीं सभी श्रेणियाँ उसी गहराई स्तर है
उदाहरण:
- श्रेणी ए
- श्रेणी A_1
- श्रेणी A_2
- श्रेणी A_2_1
- श्रेणी बी
- श्रेणी सी
- श्रेणी C_1
models.py
class Product:
categories = models.ManyToManyField(Category)
name = models.CharField(max_length=255)
class Category:
categories = models.ForeignKey(self)
name = models.CharField(max_length=255)
के रूप में पर्चा मैं एक ModelForm का उपयोग करें:
class ProductForm(ModelForm):
class Meta:
model = Product
fields = ['categories', 'name', 'short_description', 'description']
widgets = {
'categories': MyWidget,
}
मैं क्या हासिल करना चाहते हैं:
मैं एक सशर्त का चयन करें (संकीर्ण विकल्प) उत्पाद फार्म निर्माण पर लागू करना चाहते हैं:
- केवल शीर्ष अभिभावक श्रेणियां (स्तर 0 ए, बी, सी) उपलब्ध हैं
- उपयोगकर्ता अभिभावक श्रेणी का चयन करता है। अगर अभिभावक के पास बच्चों के साथ एक नया चयन बॉक्स दिखाई देता है (श्रेणी स्तर 1 ए 1, सी 1)
उपयोगकर्ता स्तर 1 श्रेणी (ए 1, सी 1) का चयन करता है।एक नया बॉक्स का चयन करें, अपने बच्चों (स्तर 2 ए 2)
- प्रक्रिया जब तक कोई संतान नहीं availavable (पुनरावर्ती) कर रहे हैं दोहराया है के साथ दिखाई माता-पिता बच्चों को है, तो एक उपयोगकर्ता ट्री में "छोटी से छोटी" श्रेणी का चयन करें
- उपयोगकर्ता के लिए और अधिक श्रेणियां जोड़ने और 1-3 प्रक्रिया को फिर से शुरू करने के लिए एक नया बटन उपलब्ध है
- मैं चुनना चाहता हूं, जावास्क्रिप्ट
- का उपयोग करके नया चयन जोड़ें, फॉर्म सबमिट पर मैं केवल अंतिम बच्चों को भेजना चाहता हूं श्रेणियां
विकल्प मैंने सोचा:
- बदलें ManyToMany coresponding डिफ़ॉल्ट फील्ड्स - लग रहा है कि वहाँ कोई अच्छा हुक और/या विरासत
- हैं की तरह उपयोग ManytoMany की एक गैर-डिफ़ॉल्ट कस्टम फील्ड instean (Charfield की तरह) - स्वच्छ पर अधिक जटिल, फॉर्म
- विजेट को बदलें/दर्ज करें।
- : मेरी मुद्दों प्रस्तुत पर डिफ़ॉल्ट फील्ड को डेटा भेजने कैसे करने के लिए और प्राप्त/संपादन पर इसे दिखाने
प्रैक्टिकल, मान लीजिए कि मैं 7 बॉक्स का चयन किया है, प्रत्येक के लिए मूल्यों के साथ जाने है Parent1-> Child11-> Child111
- Parent2-> Child21
- Parent3-> Child31-> Child311
मैं कैसे ब्राउज़र पर Django बता (अन्य डेटा के साथ) को भेजने के लिए प्रस्तुत कर सकता हूँ उनमें से तीनों में से कई अंतिम बच्चे
मैं उन्हें जावास्क्रिप्ट के साथ इकट्ठा कर सकता हूं, लेकिन मुझे यह जानना है कि Django को यह डेटा मिल गया है, यही आपको चाहिए।
मुझे कोड और संकेत के रूप में कुछ मदद की ज़रूरत है कि यह कैसे करें।
HTML टेम्पलेट कैसा दिखता है? क्या आपने कोई तर्क दिया है जैसे कि कथन? मुझे लगता है कि यह हो सकता है कि आपका समाधान कहां स्थित है .. – johnashu
एचटीएमएल टेम्पलेट इससे कोई फर्क नहीं पड़ता, मुद्दा यह है कि मुझे माता-पिता और बच्चों और श्रेणी के गहराई के स्तर के संबंध में जो जानकारी चाहिए, उसे टेम्पलेट पर नहीं भेजा जाता है । मुझे ManyToMany द्वारा आवंटित डिफ़ॉल्ट फ़ील्ड को ओवरराइट करने की आवश्यकता है। मैं 'आंतरिक' फ़ील्ड मॉडल का चयन कर रहा हूं कई अलग-अलग – user3541631