J'ai un modèle, OrderedList, qui est destiné à être une liste d'objets de contenu classés par l'utilisateur. The OrderedList a plusieurs attributs, y compris un site auquel il appartient.Validation de formulaire dans Admin avec formset en ligne et formulaire modèle
Les objets de contenu y sont attachés via une classe OrderedListRow, qui est introduite dans l'admin de OrderedList via un formset inline dans l'admin. (OrderedList hérite du champ de site du résumé GenericList plus grand).
Voici mon problème; Lorsque l'utilisateur enregistre le formulaire d'administration, je veux vérifier que chaque objet de contenu mappé par chaque OrderedListRow appartient au même site que le OrderedList (la liste ne peut appartenir qu'à un seul site, les objets de contenu peuvent appartenir à plusieurs).
Je peux redéfinir clean() du formulaire d'administration de OrderedList, mais il n'inclut pas le formset en ligne qui contient les OrderedListRows, donc il ne peut pas atteindre ces données. Je peux remplacer le formulaire en ligne de OrderedListRows, mais il ne peut pas atteindre la liste. J'ai besoin d'un moyen dans le contexte de validation de formulaire pour atteindre les données de formulaire de OrderedList et les données de formulaire du formset afin que je puisse vérifier tous les sites des objets de contenu OrderedListRow par rapport au site de OrderedList et lancer une erreur de validation en cas de problème . Jusqu'à présent, je n'ai pas trouvé de fonction dans laquelle les données nettoyées pour OrderedRow et OrderedListRows sont contenues.
Finalement, j'ai créé un formset pour le OrderedListRow en ligne et ai fait une substitution de sa fonction clean(). Dans ce document, j'ai pu tirer l'ID du site en disant site_id = self.data.get (« site ») Avec « site » étant le nom du champ du site que la OrderedList mère utilise. Essentiellement, j'y accède directement à partir des données du formulaire. Une fois que j'ai eu l'ID de site qui a été soumis, je pourrais itérer à travers toutes les formes du formset OrderedListRow, et comparer le site de leur contenu au site OrderedList. – KRH