2013-02-01 9 views
7

मेरे पास एक परिदृश्य है जिसे मैं कोडिंग शुरू करने की योजना बनाने की कोशिश कर रहा हूं और मैं django wizard का उपयोग करने के बारे में सोच रहा हूं।django विज़ार्ड, उसी चरण में फॉर्म और फॉर्मेट का उपयोग करके

मेरी योजना दो चरणों के साथ एक django विज़ार्ड बनाने के लिए है, पहला सरल लेकिन दूसरा थोड़ा और जटिल। दूसरे चरण में एक ऐसा फॉर्म होगा जो पहले चरण से चुने गए मान के आधार पर पुनः आकार देगा, जिसे मैं स्वयं देख सकता हूं। मैंने पहले से ही सभी मौजूदा कार्यक्षमताओं की खोज की है और मुझे लगता है कि इसे आसानी से किया जा सकता है।

हालांकि चुनौती का सामना करना पड़ रहा है, यह कि दूसरे चरण में ही है। मेरे पास एक फॉर्म और एक फॉर्मेट है, फॉर्मेट कई लोगों के लिए एक है (अनुच्छेद -> छवियां) ताकि दूसरे चरण तक पहुंचने पर उपयोगकर्ता एक ही लेख में एक या अधिक छवियां अपलोड कर पाए।

मैंने django विज़ार्ड क्लास में एक फॉर्मेट पास करने के लिए Google मेलिंग सूचियों और स्टैक ओवरफ्लो पर हर जगह खोजने की कोशिश की लेकिन ऐसा लगता है कि आप एक ही चरण में दो रूपों को पार नहीं कर सकते हैं।

NewItemWizard.as_view([ 
    ('category', CategorySelectionForm), 
    ('article',  ArticleForm) 
]) 

के रूप में देखा, ऊपर के उदाहरण कोड में, मैं दूसरे चरण के लिए दोनों ArticleForm और ImageFormset पारित करने में सक्षम होना चाहते हैं। क्या बॉक्स से बाहर करने का कोई तरीका है?

जो मैं पढ़ रहा हूं उसके आधार पर, मुझे लगता है कि get_context_data जैसे फ़ंक्शन का उपयोग करने में सहायता हो सकती है, लेकिन यह बहुत हैकी होगी।

def get_context_data(self, form, **kwargs): 
    context = super(NewItemWizard, self).get_context_data(form=form, **kwargs) 
    if self.steps.current == 'article': 
     context.update({ 
      'image_formset': ImageFormset() 
     }) 
    return context 

कोई भी बेहतर दृष्टिकोण के लिए सलाह दे सकता है?

चीयर्स,

+0

आप [Django फार्म-जादूगर को देखा है ] (https://github.com/stephrdev/django-formwizard)? यह फॉर्मेट का समर्थन करता है। –

उत्तर

7

अभी तक यह करने के लिए कोई सीधे एपीआई है, लेकिन यहाँ उल्लेख एक की तरह एक साफ समाधान है:

https://code.djangoproject.com/ticket/18830

+1

यह कमाल है, धन्यवाद! आपने मेरा दिन बना दिया!!! :) –

+0

** इस दृष्टिकोण का अच्छा हिस्सा यह है कि आप न केवल जादूगरों के लिए इसका उपयोग कर सकते हैं, बल्कि 'सामान्य दृश्य' जैसे 'फॉर्म व्यू' के लिए भी इसका उपयोग कर सकते हैं। प्रत्येक व्यक्ति को शायद यह [कोड उदाहरण] (https://code.djangoproject.com/attachment/ticket/18830/form_container.py) चेकआउट करना चाहिए। ** 'फॉर्मकॉन्टेनर' निश्चित रूप से Django फ्रेमवर्क का हिस्सा बनने के योग्य है! –

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