2013-06-19 8 views

Antwort

14

FormField nimmt eine Klasse keine Instanz:

class GuestForm(Form): 
    email = TextField() 
    vip = BooleanField() 

class VenueForm(Form): 
    name = TextField() 
    guests = FieldList(FormField(GuestForm)) 

Dann in Ihrem Controller:

form = VenueForm(obj=myobject) 
render("template-name.html", form=form) 

in Ihrer Vorlage müssen Sie über das Fieldlist Feld wiederholen, als ob es war sein eigenes Formular:

{% for guest_form in form.guests %} 
    <ul> 
    {% for subfield in guest_form %} 
    <li>{{ subfield.label }} {{ subfield }}</li> 
    {% endfor %} 
    </ul> 
{% endfor %} 
+4

@ downvoter - könnten Sie erklären, warum Sie die Antwort abgelehnt haben, damit ich die Antwort verbessern kann? –

+0

Hallo, ich habe versucht, Ihr Beispiel in einer Testseite zu verwenden, und es zeigt keine Felder an. Gibt es einen weiteren Schritt, um die Felder in einer Vorlage anzuzeigen, die ich möglicherweise verpasst habe? – neilH

+0

Ja, Sie benötigen ein Objekt mit einer 'guests' -Eigenschaft, die eine Liste mit einem oder mehreren Objekten mit' email'- und 'vip'-Eigenschaften enthält. Entweder das oder Sie müssen eine Mindestanzahl von Einträgen zu 'FieldList' hinzufügen - so würde '' gues'' Property-Deklaration von 'VenueForm' zu' guests = FieldList (FormField (GuestForm), min_entries = 1) ', wenn Sie es wollten ein Eintrag. –