2012-05-15 19 views
5

मेरा फॉर्म विज़ार्ड (Django 1.4) उपयोगकर्ता को विज़ार्ड पूरा होने तक आगे और पीछे जाने की अनुमति देता है। विज़ार्ड उपयोगकर्ता द्वारा भरने वाले सभी मानों को रखता है और यदि उपयोगकर्ता पहले से पूरा किए गए चरण पर वापस जाता है तो उन्हें प्रदर्शित करता है।फॉर्म विज़ार्ड और फ़ाइलफिल्ड्स (Django 1.4)

यह चार्जफ़ील्ड के लिए ठीक काम करता है लेकिन फाइलफ़िल्ड्स के लिए काम नहीं करता है। यदि उपयोगकर्ता फ़ाइलफिल्ड युक्त एक चरण में फ़ाइल सबमिट करता है और बाद में इस चरण पर वापस जाता है, तो उसे फिर से एक फ़ाइल अपलोड करनी होती है।

क्या कोई तरीका है कि उपयोगकर्ता को फ़ाइल को दोबारा अपलोड नहीं करना पड़ेगा?

कृपया ध्यान दें कि फ़ॉर्म डेटा अभी तक डेटाबेस में सहेजा नहीं गया है।

उत्तर

2

मैंने हाल ही में एक ही समस्या में भाग लिया है, और Django के सत्र विज़ार्ड व्यू (मेरे मामले में नामांकित यूआरएलशन विज़ार्ड व्यू) को उपclass करके इसे हल कर सकता है, और get_form विधि को ओवरराइड कर सकता है।

  • कि पहले से ही कदम के लिए जमा हो जाती है फ़ाइलें प्राप्त करें:

    मूल रूप से मैं निम्न कार्य करें।

  • वर्तमान सबमिट की गई फ़ाइलों पर Iterate।
  • यदि कोई सबमिट की गई फ़ाइल कोई नहीं है, तो इसे अनदेखा करें, अन्यथा पहले से संग्रहीत मूल्य को ओवरराइट करें।

    from django.contrib.formtools.wizard.views import NamedUrlSessionWizardView 
    
    class MyWizardView(NamedUrlSessionWizardView): 
    
        def get_form(self, step=None, data=None, files=None): 
         if step: 
          step_files = self.storage.get_step_files(step) 
         else: 
          step_files = self.storage.current_step_files 
    
         if step_files and files: 
          for key, value in step_files.items(): 
           if files.has_key(key) and files[key] is not None: 
            step_files[key] = files[key] 
         elif files: 
          step_files = files 
    
         return super(MyWizardView, self).get_form(step, data, step_files) 
    
    :

यहाँ कोड है

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