2008-11-14 2 views
6

Скажем, у меня есть этот простой вид:Django Forms - как не проверить?

class ContactForm(forms.Form): 
    first_name = forms.CharField(required=True) 
    last_name = forms.CharField(required=True) 

И у меня есть значение по умолчанию для одного поля, но не другой. Так что я поставил его так:

default_data = {'first_name','greg'} 
form1=ContactForm(default_data) 

Однако теперь, когда я иду, чтобы отобразить его, Django показывает ошибку проверки требуется говоря last_name:

print form1.as_table() 

Что такое правильный способ сделать это? Поскольку это не данные, которые пользователь представил, просто данные, которые я хочу заполнить.

Примечание: required = False не будет работать, потому что я хочу, чтобы он требовался, когда пользователь отправляет данные. Просто, когда я впервые покажу форму на странице, у меня не будет значения по умолчанию.

ответ

10

Конструктор форм имеет параметр initial, который позволяет предоставлять значения по умолчанию для полей.

+1

По умолчанию это означает, что делать, когда пользователь ничего не сделал. Пустые и требуемые были бы в конфликте. Первоначальный означает, что семена формы с, даже если она не будет проходить проверку позже. – 2008-11-14 18:37:40

0

Из Джанго документации это:

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) 

«требуется = False» должен произвести эффект вы после этого.

+0

Ну, я хочу это требуется, когда пользователь отправляет данные. Просто, когда я впервые покажу форму на странице, у меня не будет значения по умолчанию. (обновленный вопрос) – Greg 2008-11-14 18:22:50

1

Также можно вручную проверить и очистить ошибки позже: form.errors.clear()