2009-03-09 10 views
7
class RegistrationFormPreview(FormPreview): 
    preview_template = 'workshops/workshop_register_preview.html' 
    form_template  = 'workshops/workshop_register_form.html' 

    def done(self, request, cleaned_data): 
     # Do something with the cleaned_data, then redirect 
     # to a "success" page. 
     # data = request.POST.copy() 
     # data['user_id'] = u'%s' % (request.user.id) 
     # cleaned_data['user'] = u'%s' % (request.user.id) 
     #f = self.form(cleaned_data) 
     #f = self.form(data) 
     #f.user = request.user 


     f = self.form(request.POST) 
     f.save() 

     pdb.set_trace() 
     return HttpResponseRedirect('/register/success') 

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

स्वीकार किए जाते हैं, विधि यहाँ काम क्या है?

उत्तर

12

यदि उपयोगकर्ता संशोधित नहीं किया जा सकता है, तो मैं कहूंगा कि इसे पहले स्थान में भी शामिल नहीं किया जाना चाहिए।

किसी भी तरह से, using the commit argument जिसके परिणामस्वरूप वस्तु को रोकने के लिए तुरंत सहेजा जा रहा है काम करना चाहिए (यह मानते हुए FormPreviewModelForm उपयोग करता है):

obj = form.save(commit=False) 
obj.user = request.user 
obj.save() 
+0

धन्यवाद insin, सही पर! यदि आप आगे बढ़ना चाहते हैं तो मेरे पास एक और संबंधित प्रश्न है: http://stackoverflow.com/questions/628132/django-form-preview-how-to-work-with-cleaneddata सर्वोत्तम थाक्स। –

+0

@insin क्या होता है यदि कोई त्रुटि 'obj.save() 'द्वारा उठाई जाती है? यह संभवतः एक सामान्य 'request.user' केस के साथ मामला नहीं हो सकता है, लेकिन अधिक जटिल मामलों के बारे में क्या होगा। 'Save (commit = गलत) 'के बाद सत्यापन और त्रुटि प्रतिपादन को आप कैसे प्रबंधित करते हैं – orokusaki

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