मेरे पास एक Django मॉडल है जिसे स्टाफसेटिंग कहा जाता है जिसमें मेरे Django ऐप में उपयोगकर्ताओं के लिए विभिन्न कॉन्फ़िगरेशन विकल्प होते हैं। प्रत्येक उपयोगकर्ता के पास StaffSettings तालिका में सबसे अधिक प्रविष्टि होती है।क्या get_or_create करने के लिए एक बेवकूफ तरीका है तो Django में किसी ऑब्जेक्ट को अपडेट करें?
मान लें कि एक सेटिंग default_year_level है, और मेरे उपयोगकर्ता के लिए की तरह वस्तुओं मैं कोड है:
def set_default_year_level(u, year_level):
obj, _created = StaffSettings.objects.get_or_create(user=u)
obj.default_year_level = year_level
obj.save()
मैं समारोह के शरीर पसंद करते हैं एक लाइन पर फिट करने के लिए है क्योंकि यह एक आम उपयोग की तरह लगता है होता है, लेकिन अगर मैं इसे
def set_default_year_level(u, year_level):
StaffSettings.objects.filter(user=u).update(default_year_level=year_level)
जो ठीक काम करता है, तो प्रश्न का उपभोक्ता पहले से ही StaffSettings तालिका में एक पंक्ति है के रूप में परिभाषित है, लेकिन अगर यह मौजूद नहीं है यह प्रासंगिक पंक्ति नहीं बनाएगा।
कोड करने के लिए बेवकूफ/सर्वोत्तम तरीका क्या है? (उदाहरण के लिए filter_or_create
फ़ंक्शन का कोई प्रकार है? या अन्य लोग इस मुहावरे को संभालने के लिए सजावटी/सहायक कार्यों को लिखते हैं?)
अद्यतन() के साथ कमी का उल्लेख करने के लिए धन्यवाद। मुझे लगता है कि मैंने एक बार पढ़ा था लेकिन भूल गया था। मैंने आपके द्वारा प्रस्तावित किए गए कुछ के समान कुछ किया है, लेकिन इसके बजाय set_default_values (u, ** kwargs) बनाया है ताकि मुझे फ़ील्ड के लिए स्ट्रिंग पास न करनी पड़े, और इसके बजाय set_default_values (u, default_year_level = year_level) जैसे कोड लिख सकते हैं। । – bryn