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
-~----------~----~----~----~------~----~------~--~---

Reply via email to