J'essaie de comprendre pourquoi je ne peux pas spécifier de choix dans le widget d'un champ de formulaire si je remplace un champ ModelForm dans Django. Cela fonctionne si je donne les choix au champ mais pas au widget. Ma compréhension est/était que si vous donnez des choix à un champ, il sera passé sur le widget pour le rendu. Je sais que je peux obtenir cela pour travailler avec l'un des trois premiers extraits ci-dessous, mais je voulais juste comprendre pourquoi cette façon ne marche pas.Pourquoi la spécification de choix pour un widget ne fonctionne pas dans ModelForm .__ init__
Ceci est mon code ModelForm, merci!
from django import forms
from models import Guest
class RSVPForm(forms.ModelForm):
class Meta:
model = Guest
def __init__(self, *args, **kwargs):
"""
Override a form's field to change the widget
"""
super(RSVPForm, self).__init__(*args, **kwargs)
# This works
self.fields['attending_ceremony'].required = True
self.fields['attending_ceremony'].widget=forms.RadioSelect(choices=Guest.CHOICES)
# This works
self.fields['attending_ceremony'].required = True
self.fields['attending_ceremony'].widget=forms.RadioSelect()
self.fields['attending_ceremony'].choices=Guest.CHOICES
# This works
self.fields['attending_ceremony'] = forms.TypedChoiceField(
required=True,
widget=forms.RadioSelect,
choices=Guest.CHOICES
)
# This doesn't - the choices aren't set (it's an empty list)
self.fields['attending_ceremony'] = forms.TypedChoiceField(
required=True,
widget=forms.RadioSelect(choices=Guest.CHOICES)
)
Oh oui, je suis avec vous. Il est écrasé car les choix pour le champ ne sont pas spécifiés. Merci! –