2010-11-24 14 views
3

Dans mon modèle, j'ai une classe Condition et deux sous-classes, StringCondition et NumCondition. L'utilisateur va voir/modifier/commander les conditions dans une seule liste.formes disparate unique Django formset

Est-il possible d'implémenter ceci avec un formset de modelform Django? J'utilise actuellement deux formsets séparés (un pour NumConditions, un pour StringConditions), mais c'est difficile d'entrelacer manuellement le classement (une condition de numéro peut donc apparaître entre deux conditions de chaîne, etc.). À partir de Django 1.3, vous pouvez remplacer la méthode __iter__() d'un formset pour contrôler l'ordre dans lequel les formulaires sont rendus.

Répondre

2

Pour utiliser cette fonctionnalité, vous devez faire deux choses: d'abord marquer vos formulaires afin que vous puissiez les commander, et ensuite rendre le formset comme for form in formset (au lieu de l'ancien for form in formset.forms). Ensuite, créez une méthode __iter__() pour commander les formulaires & vous êtes en affaires.

Kent

+0

Ne pas oublier le si vous [override d'indexation] (https://docs.djangoproject.com/en/dev/topics/forms/formsets/#formsets) qui. (À partir des docs liés -> Formsets peut également être indexé, ce qui retourne le formulaire correspondant Si vous surchargez __iter__, vous devrez aussi surcharger __getitem__ pour avoir un comportement correspondant.) – KobeJohn