web-dev-qa-db-fra.com

Django widget multi-sélection?

Le site d'administration Django utilise un widget vraiment cool:

enter image description here

Comment puis-je utiliser ce widget dans mes propres applications? Je ne vois rien de tel répertorié ici .

52
mpen

De la docs :

L'application d'administration Django définit un certain nombre de widgets personnalisés pour les calendriers, les sélections filtrées, etc. Ces widgets définissent les exigences en matière de supports et l'administrateur Django utilise les widgets personnalisés à la place des valeurs par défaut Django. Les modèles d'administration n'incluront que les fichiers multimédias nécessaires pour afficher les widgets sur une page donnée.

Si vous aimez les widgets que l'application d'administration Django utilise, n'hésitez pas à les utiliser dans votre propre application! Ils sont tous stockés dans Django.contrib.admin.widgets.

Dans ce cas, vous voulez le widget FilteredSelectMultiple. Pour l'utiliser, appliquez le widget sur un champ de formulaire comme ceci:

my_field = forms.ModelMultipleChoiceField(queryset=MyModel.objects.all(), widget=FilteredSelectMultiple("verbose name", is_stacked=False))

Assurez-vous d'inclure les formulaires media dans le modèle car il doit inclure quelques fichiers JS.

51
Bartek