55 votes

Boutons radio dans django Forms

J'ai des difficultés à configurer le fichier forms.py pour inclure un bouton radio ou un bouton de sélection. J'ai regardé la documentation mais je n'ai pas réussi à appliquer la bonne syntaxe.

Voici ce que j'ai actuellement dans forms.py --

from django import forms

class PictureForm(forms.Form):
    like = forms.ChoiceField(???)
    name = forms.CharField()
    email = forms.EmailField()
    message = forms.CharField() 

Et dans mon views.py --

from app.forms import PictureForm

def index2(request):
    if request.method == 'POST':
        form = PictureForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            Picture.objects.create(like=cd['like'], name=cd['name'], email=cd['email'], message=cd['message'])
            return HttpResponseRedirect ('/thanks/')
    else:
        form = PictureForm()
    return render_to_response('index2.html', {'form':form},)

Comment puis-je configurer un ensemble de boutons radio de 'valeur1', 'valeur2', 'valeur3' ? Comment faire cela avec une liste déroulante de sélection ? Merci.

110voto

DTing Points 12969

Regardez comment définir le widget du champ et les choix lors de l'écriture de la classe de formulaire.

CHOICES=[('select1','select 1'),
         ('select2','select 2')]

like = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect)

Le widget par défaut est une sélection déroulante.

6voto

Mohit Sehgal Points 71

N'oubliez pas de supprimer tous les éléments de style externes, puis ajoutez le code ci-dessous :

CHOICES = [('M','Male'),('F','Female')]
Gender=forms.CharField(label='Gender', widget=forms.RadioSelect(choices=CHOICES))

Le code ci-dessus génère des boutons radio.

Dans mon cas, j'utilisais un style.css qui obligeait le bouton radio à être rendu sous forme de liste.

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