करने के लिए किया परिवर्तनों के बाद Django क्वेरी का मूल्यांकन मैं एक दृश्यपुन डेटाबेस
contributions = user_profile.contributions_chosen.all()\
.filter(payed=False).filter(belongs_to=concert)\
.filter(contribution_def__left__gt=0)\
.filter(contribution_def__type_of='ticket')
मैं अपने टेम्प्लेट में उसका उपयोग वह
context['contributions'] = contributions
और बाद में उस दृश्य पर मैं परिवर्तन करने पर इस लंबी क्वेरीसमूह बयान मिल गया (तालिका को जोड़ें या हटाएं) तालिका योगदान_चोज़ेन में और यदि मैं अपना संदर्भ ['योगदान'] अपडेट करना चाहता हूं तो मुझे उसी लेंस क्वेरी के साथ डेटाबेस की आवश्यकता होती है।
contributions = user_profile.contributions_chosen.all()\
.filter(payed=False).filter(belongs_to=concert)\
.filter(contribution_def__left__gt=0)\
.filter(contribution_def__type_of='ticket')
और फिर फिर से अपने संदर्भ अद्यतन
context['contributions'] = contributions
अगर तो मैं सोच रहा था थेरेस किसी भी तरह से मैं अपने स्वयं को दोहरा, योगदान पुनर्मूल्यांकन के लिए तो यह वास्तव में डेटाबेस पर वास्तविक डेटा को दर्शाता है बच सकते हैं। आदर्श रूप में मैं क्वेरीसेट योगदान संशोधित करता हूं और इसके मान अपडेट किए जाएंगे, और साथ ही डेटाबेस इन परिवर्तनों को प्रतिबिंबित करेगा, लेकिन मुझे नहीं पता कि यह कैसे करें।
अद्यतन: यह मैं दो संदर्भ के बीच क्या करना [ 'योगदान'] = योगदान
मैं contributions_chosen (यह एक M2M संबंध है) के लिए एक नया योगदान वस्तु जोड़ने के लिए, है
contribution = Contribution.objects.create(kwarg=something,kwarg2=somethingelse)
user_profile.contributions_chosen.add(contribution)
contribution.save()
user_profile.save()
और कुछ मामलों में मैं एक योगदान वस्तु योगदान = user_profile.contributions_chosen.get (आईडी = 1) user_profile.contributions_chosen.get (आईडी = request.POST [ 'चोर contribution.delete हटाना()
जैसा कि आप देख सकते हैं कि मैं तालिका योगदान_चॉइस संशोधित कर रहा हूं इसलिए मुझे क्वेरी को फिर से जारी करना होगा और संदर्भ को अपडेट करना होगा। मैं क्या गलत कर रहा हूँ?
अद्यतन मूल्यांकन के बारे में अपनी टिप्पणी देखने के बाद, मैं मैं क्वेरीसमूह eval मैं [ 'योगदान'] संदर्भ के बीच लेन (योगदान) करते हैं और है कि समस्या लगती करना एहसास। मैं इसे डेटाबेस संचालन के बाद बस ले जाऊंगा और यह है, धन्यवाद लड़का।
लगता है आप, मूल्यांकन नहीं किया क्वेरीसमूह 'contributions' इस प्रकार यह अद्यतन करने यह अभी भी डीबी से नहीं प्राप्त किए गए डेटा है क्योंकि बारे में चिंता करने की कोई जरूरत नहीं है कर सकते थे। 'QuerySet' आलसी मूल्यांकन है इस प्रकार इसका मूल्यांकन होने तक डीबी पंक्तियों से संबंधित कुछ भी नहीं है। – okm