44 votes

Dans Django, existe-t-il un moyen d'afficher les choix sous forme de cases à cocher?

Dans l'interface d'administration et formes automorphes il est le génial helper de pouvoir définir des choix. Vous pouvez utiliser le code comme ceci:

APPROVAL_CHOICES = (
    ('yes', 'Yes'),
    ('no', 'No'),
    ('cancelled', 'Cancelled'),
)

client_approved = models.CharField(choices=APPROVAL_CHOICES)

pour créer une liste déroulante dans votre forme et de la force à l'utilisateur de choisir une de ces options.

Je me demandais simplement si il existe un moyen de définir un ensemble de choix où plusieurs peuvent être choisis à l'aide des cases à cocher? (Serait aussi agréable d'être en mesure de dire que l'utilisateur peut sélectionner un nombre maximum d'entre eux.) Il semble que c'est une fonctionnalité qui est probablement mis en œuvre, c'est juste que je n'arrive pas à trouver dans la documentation.

80voto

insin Points 19509

En termes de la bibliothèque de formulaires, vous devez utiliser la MultipleChoiceField champ avec un CheckboxSelectMultiple widget pour le faire. Vous pourriez valider le nombre de choix qui ont été faits par l'écriture d'une méthode de validation pour le domaine:

class MyForm(forms.Form):
    my_field = forms.MultipleChoiceField(choices=SOME_CHOICES, widget=forms.CheckboxSelectMultiple())

    def clean_my_field(self):
        if len(self.cleaned_data['my_field']) > 3:
            raise forms.ValidationError('Select no more than 3.')
        return self.cleaned_data['my_field']

Pour obtenir ce dans l'administrateur de l'application, vous aurez besoin de personnaliser un ModelForm et remplacer la forme utilisée dans la ModelAdmin.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X