2016-05-21 9 views
1

Django 1.9+ ermöglicht es mir, die Reihenfolge der Felder ModelForm anzugeben, indem Sie eine Liste an field_order übergeben. Aber es funktioniert nicht, wenn ich exclude habe in meiner Form der Meta Klasse:Django-Formularfelder mit Ausschluss bestellen

class MyForm(ModelForm): 

    class Meta: 
     model = MyModel 
     exclude = ['unwanted_field1', 'unwanted_field2'] 
     field_order = ['foo', 'bar', 'spam', 'eggs'] 

(ich die Felder in der Reihenfolge, wie sie im Modell definiert sind). Wenn ich die Felder angeben ich mit exclude stattdessen wollen, werden sie, wie ich will bestellt:

class MyForm(ModelForm): 

    class Meta: 
     model = MyModel 
     fields = ['foo', 'bar', 'spam', 'eggs'] 

Wie sollte man field_order benutzen?

Antwort

1

Ich lasse hier meine eigene Lösung für den Fall, dass jemand auf die gleiche Weise stolpert. Es scheint, dass field_order ein Attribut der ModelForm Klasse ist, nicht von seiner Meta Klasse (aus irgendeinem Grund: Erklärungen willkommen ...). Daher funktioniert das Folgende wie folgt:

class MyForm(ModelForm): 

    field_order = ['foo', 'bar', 'spam', 'eggs'] 

    class Meta: 
     model = MyModel 
     exclude = ['unwanted_field1', 'unwanted_field2'] 
Verwandte Themen