क्या डेटाबेस से django ऑब्जेक्ट की स्थिति को ताज़ा करना संभव है? मेरा मतलब है कि व्यवहार के बराबर:
new_self = self.__class__.objects.get(pk=self.pk)
for each field of the record:
setattr(self, field, getattr(new_self, field))
अद्यतन: ट्रैकर में एक फिर से खोलने / wontfix युद्ध मिला: http://code.djangoproject.com/ticket -901 । अभी भी समझ में नहीं आता है कि अनुरक्षकों को यह पसंद क्यों नहीं है।
यह एक अनावश्यक कार्य की तरह लगता है; डेटाबेस से ऑब्जेक्ट को फिर से देखने के लिए पहले से ही संभव है।
—
Stephan
यह उचित नहीं है क्योंकि Django मॉडल ऑब्जेक्ट समीप हैं। यदि आपको एक ही तालिका पंक्ति दो वस्तुओं में मिलती है - X1 = X.objects.get (id = 1); x2 = X.objects.get (id = 1), वे समान के रूप में परीक्षण करेंगे लेकिन वे अलग-अलग वस्तुएं हैं और राज्य साझा नहीं है। आप दोनों को स्वतंत्र रूप से बदल सकते हैं और उन्हें बचा सकते हैं - अंतिम बचाया डेटाबेस में पंक्ति की स्थिति निर्धारित करता है। इसलिए सरल असाइनमेंट - X1 = X.objects.get (id = 1) के साथ पुनः लोड करना सही है। पुनः लोड विधि होने से कई लोग गलत तरीके से उस X.f = 'नए मूल्य' का संदर्भ ले सकते हैं; (X1.f == x2.f) सत्य है।
—
पॉल व्हिप
commmit
। एक बार जब आप ऐसा कर लेते हैं, तो आपको अगले एसक्यूएल लेनदेन के लिए इंतजार करना होगा। ऐसा क्यों करते हैं? अगले लेनदेन के लिए आप कितने समय तक इंतजार करेंगे?