2010-07-26 5 views
0

J'ai un de basé sur ModelForm et utilise formset_factory pour créer un formset basé sur deux dictionnaires. Il y a aussi un formulaire supplémentaire. À mon avis, j'utilise le plugin formset JS et je supprime les deux formes avec des données. Lorsque je POSTE le formulaire supplémentaire vide restant, il échoue validation en raison d'un champ obligatoire.Qu'est-ce qui déclenche la validation de formulaire pour un formset Django?

Je ne comprends pas pourquoi ce formulaire est en cours de validation. Sa liste changed_data est vide. Il est retourné avec empty_permitted = False (et j'aimerais savoir pourquoi), mais même après que je l'ai changé en True dans le débogueur, il est validé.

Alors, qu'est ce que le déclenchement de la validation et comment puis-je le modifier?

Je serais également intéressé de savoir où sont stockées les données comme les données initiales. Est-ce quelque part à mon avis où je ne le vois pas?

Répondre

0

Le formulaire de gestion de modèle comporte un compteur appelé INITIAL_FORMS. Le plugin formset pour l'ajout et la suppression de formulaires ne fait pas la distinction entre les formulaires initialement remplis et les formulaires qu'il ajoute. Lorsqu'un formulaire est supprimé, s'il a été renseigné initialement, alors INITIAL_FORMS doit être décrémenté.

Ceci peut être implémenté en incluant une variable de modèle qui marque les formulaires qui sont initialement remplis. Dans la fonction supprimée du plugin formset, si l'un de ces formulaires marqués est en cours de suppression, décrémentez INITIAL_FORMS.

Questions connexes