Hello! For example I have: class ContactForm(forms.Form): def __init__(self, foo, *args, **kwargs): super(ContactForm, self).__init__(*args, **kwargs) self.fields['subject'] = forms.CharField() self.fields['message'] = forms.CharField() self.fields['sender'] = forms.EmailField() if foo == 'boo': self.fields['cc_myself'] = forms.BooleanField()
In a view I have standard Django form processing like this: def contact(request): if request.method == 'POST': form = ContactForm(request.POST) if form.is_valid(): #processing the form here else: form = ContactForm('boo') return render_to_response('base_contact.html', { 'form': form, }) But It seems that binding and validation doesn't work if I have custom __init__ method with an additional parameter. The form never is bound. After submitting the form I try the next in my debug probe: >>> print request.method POST >>> print request.POST <QueryDict: {u'cc_myself': [u'on'], u'message': [u'I am here'], u'sender': [u'm...@me.com'], u'subject': [u'Hello']}> >>> form = ContactForm(request.POST) #I am trying to bind data to form >>> print form.is_bound #but it doesn't work False >>> print form.is_valid() #so form isn't valid False >>> So my question: what I am doing wrong when trying to override __init__ method? And one more... If I delete additional parameter in __init__ definition then everything is ok: class ContactForm(forms.Form): def __init__(self, *args, **kwargs): super(ContactForm, self).__init__(*args, **kwargs) self.fields['subject'] = forms.CharField() self.fields['message'] = forms.CharField() self.fields['sender'] = forms.EmailField() self.fields['cc_myself'] = forms.BooleanField() >>> print request.method POST >>> print request.POST <QueryDict: {u'cc_myself': [u'on'], u'message': [u'I am here again'], u'sender': [u'm...@me.com'], u'subject': [u'Hi again']}> >>> form = ContactForm(request.POST) >>> print form.is_bound True >>> print form.is_valid() True So, please, help me resolve this problem! With regards, Max. (sorry if my English isn't very proper) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---