2010-09-09 38 views
10

¿Cuándo debería usar TypedChoiceField con una función de coerción sobre un ChoiceField con un método limpio en el formulario para el campo?TypedChoiceField u ChoiceField en Django

En otras palabras, ¿por qué usar MyForm sobre MyForm2 o viceversa? ¿Es esto simplemente una cuestión de preferencia?

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) 

Respuesta

11

Utilizaría un método clean_field para hacer "trabajos pesados". Por ejemplo, si su campo requiere una limpieza personal no trivial y/o conversión de tipo, etc. Si, por otro lado, el requisito es sencillo, como forzar a int, entonces clean_field es probablemente una exageración. TypedChoiceField sería el camino a seguir en ese caso.

Cuestiones relacionadas