का उपयोग करते समय ManyToMany फ़ील्ड सहेजा नहीं गया है, मुझे एक अजीब समस्या का सामना करना पड़ रहा है, जिसमें मुझे उम्मीद है कि यहां कोई व्यक्ति कुछ प्रकाश डालने में सक्षम हो सकता है।Django व्यवस्थापक
मैं सुपर() चलाने के बाद कईToMany-field में कुछ मान जोड़ने के लिए मॉडल के सेव() विधि को ओवरराइड कर रहा हूं। मेरी समस्या यह है कि जब मैं Django व्यवस्थापक में बचत कर रहा हूं तो मान संबंधों में जोड़े जाते हैं लेकिन फिर खाली हो जाते हैं।
यदि मैं इसे manage.py shell
से करता हूं तो यह बिना किसी समस्या के काम करता है।
मैंने वहां दो प्रिंट स्टेटमेंट लगाए हैं और अगर मैं Django व्यवस्थापक या खोल के माध्यम से इसे चला रहा हूं, तो वे सटीक उसी आउटपुट का उत्पादन करते हैं।
class Store(models.Model):
holidays = models.ManyToManyField(StoreHoliday, blank=True)
copy_holidays_from = models.ForeignKey('Store', blank=True, null=True)
def save(self):
print '==== BEFORE SAVE:', self.holidays.all()
super(Store, self).save()
self.copy_holidays()
print '==== AFTER SAVE:', self.holidays.all()
def copy_holidays(self):
if self.pk and self.copy_holidays_from:
self.holidays.clear()
for h in self.copy_holidays_from.holidays.all():
self.holidays.add(h)
यह print
बयान के उत्पादन में है:
==== BEFORE SAVE: []
==== AFTER SAVE: [<StoreHoliday: 10 Mar 2010, Chuck Norris birthday (Closed)>]
किसी को भी यह क्या कारण हो सकता है पर किसी भी सुझाव हैं?
संपादित करें: बचत इंटरफ़ेस के माध्यम से सहेजते समय डीजेगो द्वारा सहेजे गए एम 2 एम रिलेशनशिप में सभी मैन्युअल परिवर्तनों को छोड़ दिया जाता है। क्या यह इस फ़ॉर्म को संसाधित करता है?
मुझे नहीं पता कि आपकी समस्या कहां है, लेकिन 'self.holidays = self.copy_holidays_from.holidays.all()' बहुत अच्छा दिखता है और फिर समाशोधन करता है। – DrTyrsa
टिप के लिए धन्यवाद, मुझे नहीं पता था कि यह संभव था। आप नीचे क्या देख सकते हैं मैंने क्या गलत किया। –