2010-09-09 8 views
10

Quand devriez-vous utiliser TypedChoiceField avec une fonction de coercition sur un champ ChoiceField avec une méthode propre sur le formulaire pour le champ? En d'autres termes, pourquoi utiliser MyForm sur MyForm2 ou vice versa. Est-ce simplement une question de préférence?TypedChoiceField ou ChoiceField dans Django

from django import forms 

CHOICES = (('1', 'A'), ('2', 'B'), ('3', 'C')) 

class MyForm(forms.Form): 
    my_field = ChoiceField(choices=CHOICES) 

    def clean_my_field(self): 
     value = self.cleaned_data['my_field'] 
     return int(value) 

class MyForm2(forms.Form): 
    my_field = TypedChoiceField(choices=CHOICES, coerce=int) 

Répondre

11

J'utiliser une méthode clean_field pour faire « soulever des charges lourdes ». Par exemple, si votre champ nécessite un nettoyage personnalisé et/ou une conversion de type non-trivial, etc. Si d'autre part l'exigence est simple comme coercer à int alors le clean_field est probablement une overkill. TypedChoiceField serait le chemin à parcourir dans ce cas.