2008-11-14 21 views
6

decir que tengo este sencillo formulario:Formularios Django - ¿Cómo no validar?

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

Y tener un valor predeterminado para un campo pero no el otro. Así lo configuro como esto:

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

Sin embargo, ahora cuando voy a mostrarlo, Django muestra un error de validación se requiere diciendo apellidos:

print form1.as_table() 

Cuál es la forma correcta de hacer esto? Como esto no son datos que el usuario ha enviado, solo datos que quiero rellenar.

Nota: obligatorio = Falso no funcionará porque quiero que se requiera cuando el usuario envía los datos. Justo cuando primero muestro el formulario en la página, no tendré un valor predeterminado.

Respuesta

10

El constructor de formulario tiene el parámetro initial que permite proporcionar valores predeterminados para los campos.

+1

Por defecto significa qué hacer cuando el usuario no ha hecho nada. Vacío y requerido estaría en conflicto. Inicial significa con qué sembrar el formulario, incluso si no pasará la validación más tarde. –

0

A partir de los documentos de Django es la siguiente:

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) 

El "requerido = False" debe producir el efecto que está buscando.

+0

Bueno, yo lo quiero que se requiere cuando el usuario envía los datos. Justo cuando primero muestro el formulario en la página, no tendré un valor predeterminado. (pregunta actualizada con esto) – Greg

1

También es posible validar de forma manual y errores claros más adelante: form.errors.clear()

Cuestiones relacionadas