How to sort Django form fields automatically

Viewed 80

I have a Django ModelForm like this:

class MyForm(forms.ModelForm):
    def make_this_fields_first(self, my_fields):
          # what can I do here?

    class Meta:
        model= MyModel
        fields = '__all__'

In my view I want to do this:

my_form_obj = MyForm()
my_form_obj.make_this_fields_first(['field6','field3'])
1 Answers

You can call the BaseForm's order_fields() method:

my_form_obj = MyForm()
my_form_obj.order_fields(['field6', 'field3'])

Alternatively the Meta.fields in a ModelForm are ordered. The form fields will be generated in the same order that they are defined there:

class MyForm(forms.ModelForm):

    class Meta:
        model= MyModel
        fields = ['field6', 'field3', ...]
Related