मेरे पास एक मॉडल है जिसमें मैं एक विषय का नाम और उनके नाम शामिल करना चाहूंगा (वह डेटा कुछ हद तक अनाम है और आद्याक्षर द्वारा ट्रैक किया गया है)।
अभी, मैंने लिखा है
class Subject(models.Model):
name = models.CharField("Name", max_length=30)
def subject_initials(self):
return ''.join(map(lambda x: '' if len(x)==0 else x[0],
self.name.split(' ')))
# Next line is what I want to do (or something equivalent), but doesn't work with
# NameError: name 'self' is not defined
subject_init = models.CharField("Subject Initials", max_length=5, default=self.subject_initials)
जैसा कि अंतिम पंक्ति द्वारा इंगित किया गया है, मैं वास्तव में डेटाबेस में एक क्षेत्र (नाम से स्वतंत्र) के रूप में संग्रहीत प्रारंभिक प्राप्त करने में सक्षम होना पसंद करूंगा, लेकिन नाम फ़ील्ड के आधार पर डिफ़ॉल्ट मान के साथ आरंभ किया जाता है। हालाँकि, मैं मुद्दों के रूप में django मॉडल एक 'स्व' है प्रतीत नहीं कर रहा हूँ।
अगर मैं लाइन को बदल देता subject_init = models.CharField("Subject initials", max_length=2, default=subject_initials)
हूं, तो मैं सिंकबब कर सकता हूं, लेकिन नए विषय नहीं बना सकता।
क्या Django में यह संभव है, एक कॉल करने योग्य फ़ंक्शन किसी अन्य फ़ील्ड के मान के आधार पर कुछ फ़ील्ड को डिफ़ॉल्ट देता है?
(जिज्ञासु के लिए, मैं अपने स्टोर इनीशियल्स को अलग से अलग करना चाहता हूं, यह दुर्लभ मामलों में है जहां अजीब अंतिम नाम मेरे द्वारा ट्रैक किए जा रहे लोगों की तुलना में अलग हो सकते हैं। उदाहरण के लिए, किसी और ने फैसला किया कि सब्जेक्ट 1 नाम "जॉन ओ'मालरी" इनिशियल है। "JM" के बजाय "JO" और इसे व्यवस्थापक के रूप में संपादित करना ठीक करना चाहता है।
super().save(*args, **kwargs)
(Subject, self
तर्कों के बिना ) कॉल कर सकते हैं ।