In Django, how do you save multiple form fields into a single model field as a list of values using a ModelForm? -


दिये गए:

  से आयात मॉडल वर्ग MyModel (models.Model): ... मालिकों = मॉडल.कारफिल्ड (अधिकतम_लांबी = 255, रिक्त = गलत)   

जहां स्वामी ईमेल पते की एक पाइप से अलग सूची है।

पेज में, एक ही नाम के साथ कई & lt; इनपुट & gt; फ़ील्ड हैं, इसलिए सर्वर को एक सरणी में मान मिलते हैं। < P> फॉर्म के लिए HTML कोड द्वारा हाथ किया गया था और इसमें अंतर्निर्मित टेम्पलेट (जैसे form.as_p ) का उपयोग नहीं करता।

क्या Django का ModelForm क्या ऐसा कुछ संभाल सकता है?

मॉडल को पुनर्प्राप्त करते समय दोनों डेटा परिवर्तन को संभालने के लिए उचित स्थान क्या है (मुझे कस्टम मॉडल बनाना है। प्रबंधक / ?) और इसे सहेजते समय (जो save () विधि को ओवरराइड करते हैं? मॉडल या ModelForm 's)? < / P>

- क्लैरिफिकेशन के लिए अद्यतन -

डेटाबेस में:

  + - ---- + --------------------------- + ----- + | ... | मालिकों | ... | + ----- + --------------------------- + ----- + | ... | "A@a.com | बी @ बी.कॉम | c@c.com" | ... | + ----- + --------------------------- + ----- +   < P> प्रपत्र:  
  & lt; फ़ॉर्म ... & gt; ... & lt; इनपुट प्रकार = "टेक्स्ट" नाम = "मालिक" / & gt; & Lt; इनपुट प्रकार = "टेक्स्ट" नाम = "स्वामी" / & gt; & Lt; इनपुट प्रकार = "टेक्स्ट" नाम = "स्वामी" / & gt; ... & lt; / form & gt;    

आप उपयोग कर सकते हैं और बहुआयामीफ़िल्ड जानता है कि आपके मॉडल के एक फ़ील्ड में एकाधिक असतत मान हैं और MultiWidget विजेट जानता है कि प्रत्येक असतत मान कब प्रस्तुत किया जाना चाहिए। वे अपने क्षेत्रों के लिए अद्वितीय नाम बनाने के लिए संभाल लेंगे ताकि वे फ़ॉर्म को POST मानों से पुनर्निर्माण कर सकें और आप किसी भी रूपरेखाओं को क्रियान्वित करने के लिए ओवरराइड नहीं करना पड़े, यानी आपको ओवरराइड नहीं करना होगा सेव ()

जैसा कि आप देख सकते हैं, आधिकारिक दस्तावेज़ विषय पर थोड़े पतले हैं। मेरा सुझाव है कि आप कोड पर एक झांकना लेते हैं कि यह पता लगाने के लिए कि सब कुछ कैसे वायर्ड है और क्या कहा जाता है, क्योंकि आपकी आवश्यकताएं हमेशा एक अनूठे समाधान की आवश्यकता होती हैं, यानी: फ़ील्ड में कितने ईमेल होंगे? ठीक से दो, इसलिए मैं दो CharField विजेट्स को हाथ से निर्दिष्ट कर सकता हूं, या यह 0-2 के बीच होने जा रहा है, इसलिए मुझे मूल्य पारित किए जाने के आधार पर हर चीज को गतिशील बनाना होगा? यदि आपको प्रारंभिक संदर्भ के रूप में एक अच्छा उदाहरण की आवश्यकता है, तो जांच लें कि कार्यान्वयन का पालन करने में एक साफ और आसान है।

आदर्श रूप से, आपको PipedEmailAddressesField कोड> चरखा फ़ील्ड अपने मॉडल के क्षेत्र के रूप में, जो यह जानता है कि यह पाइप किए गए ईमेल पतों को संग्रहित करता है यह अपने स्वयं के उपयुक्त MultiValueField फार्म फ़ील्ड का निर्माण करने में सक्षम होना चाहिए, जिसकी वजह से इसे अपने स्वयं के उपयुक्त MultiWidget क्षेत्र का निर्माण करना चाहिए।

Comments