2010-06-01 11 views
0

Ok, voici la question. Imaginez que j'ai une ModelForm qui n'a que deux champs. comme celui-ci:Comment créer un ModelForm Django, de sorte que ses champs sont parfois requis, parfois non?

class ColorForm(forms.Form): 
    color_by_name = forms.CharField() 
    color = forms.IntegerField(widget = forms.Select(choices=COLOR_CHOICES)) 

Un utilisateur peut soit entrer un nom de couleur, soit le choisir dans une liste. La couleur est requise, mais cela ne signifie pas que l'utilisateur doit l'entrer manuellement. Est-ce que je mets la validation, de sorte que mon code vérifie si l'utilisateur a choisi la couleur dans la liste déroulante et sinon il devrait l'écrire manuellement?

Répondre

7

Rendez-les tous les deux required=False, mais écrivez une méthode clean() qui vérifie l'un ou l'autre. Voir the validation documentation pour un exemple.

+0

Cela a fonctionné pour moi! Merci, Daniel! – Graf