2012-11-28 14 views
9

मुझे Django फॉर्म फ़ील्ड की आवश्यकता है जो तारों की एक सूची लेगा।स्ट्रिंग्स की सूची के लिए Django फॉर्म फ़ील्ड

मैं इस सूची में पुन: प्रयास करूंगा और प्रत्येक स्ट्रिंग के लिए एक नया मॉडल ऑब्जेक्ट बनाउंगा।

मैं एक मॉडल एकाधिक विकल्प फील्ड नहीं कर सकते, क्योंकि मॉडल वस्तुओं के बाद फ़ॉर्म जमा तक नहीं बनाई गई हैं, और मैं एक एकाधिक विकल्प फील्ड ऐसा नहीं कर सकते, क्योंकि मैं स्वीकार करने की जरूरत मनमानी तार, न केवल पूर्व परिभाषित विकल्पों की एक श्रृंखला।

कोई भी यह कैसे जानता है?

उत्तर

0

मैं एक समाधान के साथ आया - थोड़ा हैकी लेकिन यह अभी के लिए काम करता है।

प्रपत्र डेटा हथियाने के बाद, मैं एक चर में सूची छिपाया:
event_locations = form_data.get('event_locations', None)

तो मैं यह form_data से हटा दें, तो Django फार्म कभी नहीं सूची हो जाता है:

if event_locations: 
    del form_data['event_locations'] 

मैं का दृष्टांत फॉर्म_डेटा के साथ मेरा फॉर्म, और सूची को अलग से संभाल लें:

f = NewEventForm(form_data) 
... 
for loc in event_locations: 
    #create new models here 

मुझे एहसास है कि यह प्रत्यक्ष नहीं है मैंने जो सवाल पूछा, उसे हल करें, क्योंकि हमारे पास अभी भी एक Django फॉर्म फ़ील्ड नहीं है, लेकिन यह एक सूची में पास करने का एक तरीका है जो एक फॉर्म लेता है और इसे संभालने में सक्षम होता है।

5

बस अल्पविरामों द्वारा सीमित नियमित टेक्स्ट फ़ील्ड का उपयोग करें। दृश्य में फॉर्म सबमिशन को संभालने के बाद उस क्षेत्र के आधार पर एक अल्पविराम स्ट्रिंग विभाजन करें। फिर प्रत्येक व्यक्ति को एक नया मॉडल बनाने और सहेजने के लिए पुन: प्रयास करें। बहुत मुश्किल नहीं होना चाहिए।

+0

मैंने इसे माना, लेकिन यह मेरे एपीआई में सम्मेलन के साथ एक बहुत बड़ा ब्रेक होगा। –

संबंधित मुद्दे