Greg
Greg

Reputation: 47094

Django Forms - How to Not Validate?

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

Answers (3)

sorrat
sorrat

Reputation: 923

Also it's possible manually validate and clear errors later: form.errors.clear()

Upvotes: 1

Alex Koshelev
Alex Koshelev

Reputation: 17439

Form constructor has initial param that allows to provide default values for fields.

Upvotes: 11

Jack M.
Jack M.

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

Related Questions