2009-11-11 16 views
8

के साथ Django फॉर्म विज़ार्ड और पूर्वावलोकन मेरे पास एक बड़ा Django मॉडल (73 फ़ील्ड) है जो मॉडलफॉर्म से कनेक्ट होगा। मैं कार्यक्षमता के संयोजन का उपयोग करना चाहता हूं जिसमें फॉर्म विज़ार्ड और फॉर्म पूर्वावलोकन contrib ऐप्स पाए गए हैं।मॉडलफॉर्म

आईई, फॉर्म फ़ील्ड एकाधिक पृष्ठों पर विभाजित हो जाएंगे, और उपयोगकर्ता को उदाहरण के उदाहरण से पहले डेटा की समीक्षा/पूर्वावलोकन करने का मौका मिलेगा।

क्या इस प्रकार की चीज़, या उदाहरण कोड के लिए कोई सर्वोत्तम अभ्यास है?

+1

यह एक जवाब है, लेकिन वैसे भी लायक नहीं है कम से कम, यह मेरे लिए था)। यहां एक बात है - आप किसी स्पष्ट तरीके से ('प्रारंभिक मानों के अलावा) फ़ॉर्म के '__init__' को पास किए गए नियंत्रण को नियंत्रित नहीं कर सकते हैं। तो आप फ़ॉर्म के '__init__' के लिए" उदाहरण "कीवर्ड तर्क कैसे प्रदान करेंगे? निस्संदेह * हैं * तरीके - उदाहरण के लिए, मैंने इसे एक आंतरिक वर्ग घोषित करके हल किया, जो कि निरंतर मॉडलफॉर्म से प्राप्त होता है और '__init__' को ओवरराइड करता है। फिर आपको उस वर्ग को .form_list के तत्व को असाइन करना होगा। बहुत स्पष्ट नहीं है ... – shylent

+1

... और यदि आप फॉर्म विज़ार्ड का उपयोग करने जा रहे हैं तो आपको ऐसी चीजों से निपटना होगा। मैं यह नहीं कह रहा हूं कि फॉर्म विज़ार्ड खराब है, लेकिन यह निश्चित रूप से उपयोग करना बहुत आसान नहीं है। और 73 फ़ील्ड? मुझे पता है, यह गूंगा लग सकता है, लेकिन, शायद, कई छोटे कार्यों में इसे तोड़कर कार्य को सरल बनाने का एक तरीका है? अपने मॉडल को पुनर्गठन की तरह और उनमें से प्रत्येक के साथ अलग से निपटने की तरह? – shylent

+0

प्रतिक्रिया के लिए धन्यवाद, shylent। मान लीजिए या 73 फ़ील्ड _is_ सरलीकृत नहीं है। यह केवल इतना डेटा है जिसे हमें एकत्र करने की आवश्यकता है। :-) –

उत्तर

1

मैं अपनी पहली Django परियोजना में एक ही चीज़ करता हूं। सत्र-आधारित फॉर्म विज़ार्ड का उपयोग करके, मैंने इसे अनुकूलित किया ताकि उपयोगकर्ता किसी भी रूप में डेटा को सबबमिट करने से रोक सके।

उस बिंदु पर आप संभवतः फॉर्म दिखाने के लिए फॉर्मप्रूव्यू का उपयोग कर सकते हैं या केवल गतिशील रूप से फॉर्म उत्पन्न कर सकते हैं और इसे उपयोगकर्ता को दिखा सकते हैं। डेटा सत्र में रहता है। पर यह सबसे तुच्छ बातों से परे कुछ भी FormWizard उपयोग करने के लिए समस्याएं खड़ी कर सकता (:

0

आप संदर्भ के लिए पूरे शब्दकोश पारित कर सकते हैं और फिर अपने टेम्पलेट में इसे उपयोग:

# views.py 
def get_context_data(self, **kwargs): 
    context = super(MyWizard, self).get_context_data(**kwargs) 
    context['all_data'] = self.get_all_cleaned_data() 
    return context 

# template.html 
{{ all_data }} 
संबंधित मुद्दे