Ik gebruik zoiets als dit:
field1 = forms.ModelChoiceField(queryset=...)
Hoe kan ik ervoor zorgen dat mijn formulier de a-waarde toont zoals geselecteerd?
Antwoord 1, autoriteit 100%
Als u de standaard beginwaarde wilt instellen, moet u definiëren initial
zoals andere formuliervelden, behalve u stel het in plaats daarvan in op de id.
Stel dat je field1
als volgt hebt:
class YourForm(forms.Form):
field1 = forms.ModelChoiceField(queryset = MyModel.objects.all() )
dan moet je de initialen instellen wanneer je je formulier als volgt maakt:
form = YourForm(initial = {'field1': instance_of_mymodel.pk })
in plaats van:
form = YourForm(initial = {'field1': instance_of_mymodel })
Ik neem ook aan dat je __unicode__
voor je modellen hebt gedefinieerd, zodat dit correct wordt weergegeven.
Antwoord 2, autoriteit 25%
Je kunt gewoon
. gebruiken
field1 = forms.ModelChoiceField(queryset=..., initial=0)
om de eerste waarde te selecteren enz. Het is een meer algemene manier dan het andere antwoord.
Antwoord 3, autoriteit 10%
De tijden zijn veranderd:
De standaard beginwaarde kan nu worden ingesteld door initial
te definiëren zoals andere formuliervelden behalve dat u deze in plaats daarvan op de id instelt.
Dit is nu voldoende:
form = YourForm(initial = {'field1': instance_of_mymodel })
Hoewel beide nog steeds werken.
Antwoord 4, autoriteit 4%
De code
form = YourForm(initial = {'field1': instance_of_mymodel.pk })
en
form = YourForm(initial = {'field1': instance_of_mymodel })
of eerste veld direct volgend:
field1 = forms.ModelChoiceField(queryset=..., initial=0)
Alles werkt.
De eerste twee manieren hebben voorrang op de laatste.
Antwoord 5, autoriteit 2%
field1 = forms.ModelChoiceField(queryset=Model.objects.all(), empty_label="Selected value")
Zo simpel is het…!
Antwoord 6
U zou dit ook kunnen doen:
form = YourForm(initial = {'field1': pk })
als u uw primaire sleutel ontleden via een queryreeks of via een ajax-aanroep, geen instantie nodig, de queryset heeft dat al afgehandeld voor uw vervolgkeuzelijst, de pk indexeert de gewenste status