2016-05-29 3 views
3

Ich habe versucht, ein ModelChoiceField mit Formular erstellenWie wird der Standardwert der Option in ModelChoiceField django beim Laden angezeigt?

class Person(forms.Form): 

    person = forms.ModelChoiceField(queryset=Person.objects.filter(is_active=True).order_by('id'), required=False) 
    age = forms.IntegerField(min_value=18, max_value=99, required=False) 

Rückkehr als HTML-Ausgabe

ist
<option value="1">Person object</option> 

Jetzt will ich von name oder id Standardwert von ModelChoiceField angezeigt wird, wenn das Laden der Seite. Bsp .:

<option value="7">David</option> 

Wenn der Benutzer es nicht möchte, kann er einen anderen auswählen. Wie kann ich das machen?

Antwort

2

allererst Sie __unicode__ Methode ändern müssen (oder __str__ wenn auf python3), so wäre es Name der Person Objekt zurückgeben https://docs.djangoproject.com/en/1.9/ref/models/instances/#str

class Person: 
    ... # your fields 
    def __unicode__(self): 
     return self.name 

als Sie Standardwert zur Verfügung stellen müssen Sie Feld bilden https://docs.djangoproject.com/en/1.9/ref/models/fields/#default

person = forms.ModelChoiceField(queryset=Person.objects.filter(is_active=True).order_by('id'), required=False, default=Person.objects.get(id=7)) 
+0

Vielen Dank –

+0

Gern geschehen, auch wenn diese Antwort Ihr Problem behoben, sollten Sie es als solches markieren (http://meta.stackexchange.com/questions/147531/how-mark-my-question- als beantwortet auf dem Stapel Überlauf), also wenn Leute diese Frage besuchen, werden sie wissen, dass das richtig ist. –

Verwandte Themen