Reputation: 47094
Say I have this simple form:
class ContactForm(forms.Form):
first_name = forms.CharField(required=True)
last_name = forms.CharField(required=True)
And I have a default value for one field but not the other. So I set it up like this:
default_data = {'first_name','greg'}
form1=ContactForm(default_data)
However now when I go to display it, Django shows a validation error saying last_name is required:
print form1.as_table()
What is the correct way to do this? Since this isn't data the user has submitted, just data I want to prefill.
Note: required=False will not work because I do want it required when the user submits the data. Just when I'm first showing the form on the page, I won't have a default value.
Upvotes: 7
Views: 2831
Reputation: 923
Also it's possible manually validate and clear errors later: form.errors.clear()
Upvotes: 1
Reputation: 17439
Form constructor has initial
param that allows to provide default values for fields.
Upvotes: 11
Reputation: 32070
From the django docs is this:
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
The "required=False" should produce the effect you're after.
Upvotes: 1