2011-10-05 12 views
5

J'ai deux questions concernant le Django ChoiceField:Django Forms ChoiceField

Ceci est ma forme:

class ContactForm(forms.Form): 
    GENDER = (
     (1, _("Mr.")), 
     (2, _("Ms.")), 
    ) 
    prefix = forms.ChoiceField(choices=GENDER) 
    ... 

Cela fonctionne bien, mais je me demandais pourquoi le choicefield ne prend pas défaut ..

Sur la page, il affiche Mr comme valeur sélectionnée, cependant si le formulaire est soumis (note: required = True est la valeur par défaut pour ce champ) il ne renvoie pas d'erreur et la valeur dans mon formulaire est " Ms "à la place.

Autre question: {{ prefix.get_prefix_display }} ne semble pas fonctionner .. Y at-il une différence entre les modèles et les formes avec l'utilisation de cette fonction?

Répondre

9

Je pense que vous mélangez FormFields et ModelFields. Votre FormField peut définir un choix par défaut apparaisse en utilisant l'argument « initial »:

https://docs.djangoproject.com/en/dev/ref/forms/fields/#initial

mais il est représenté dans votre modèle par un ModelField, pour laquelle une valeur par défaut peut être réglé en utilisant l'argument « par défaut » :

https://docs.djangoproject.com/en/dev/ref/models/fields/#default

+0

Merci c'est ce que je cherchais –