2008-11-14 7 views
6

Dire que je cette forme simple:Django Forms - Comment ne pas valider?

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

Et j'ai une valeur par défaut pour un champ, mais pas l'autre. Donc, je l'ai mis en place comme ceci:

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

Mais maintenant, quand je vais l'afficher, Django montre une erreur de validation disant last_name est nécessaire:

print form1.as_table() 

Quelle est la bonne façon de le faire? Comme ce ne sont pas des données que l'utilisateur a soumises, il s'agit simplement de données que je souhaite pré-remplir.

Remarque: required = False ne fonctionnera pas car je le souhaite lorsque l'utilisateur soumet les données. Juste quand je montre d'abord le formulaire sur la page, je n'aurai pas de valeur par défaut.

Répondre

10

Le constructeur de formulaire a initial param qui permet de fournir des valeurs par défaut pour les champs.

+1

Par défaut signifie quoi faire quand l'utilisateur n'a rien fait. Vide et obligatoire serait en conflit. Initial indique à quoi sert le formulaire, même s'il ne sera pas validé ultérieurement. –

0

Des django docs est ceci:

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) 

Le "nécessaire = Faux" devrait produire l'effet que vous êtes après.

+0

Eh bien, je ne le veux nécessaire lorsque l'utilisateur envoie les données. Juste quand je montre d'abord le formulaire sur la page, je n'aurai pas de valeur par défaut. (mise à jour de question avec ceci) – Greg

1

Il est également possible de valider manuellement et les erreurs claires plus tard: form.errors.clear()

Questions connexes