Skip to content

Instantly share code, notes, and snippets.

@sjava
Forked from rombr/forms.py
Created August 17, 2016 14:28
Show Gist options
  • Save sjava/45a2af5cbc123aae1b6d21f4b77e4028 to your computer and use it in GitHub Desktop.
Save sjava/45a2af5cbc123aae1b6d21f4b77e4028 to your computer and use it in GitHub Desktop.
How to add custom fields order to WTForms
from collections import OrderedDict
# ...
class OrderFormMixin(object):
'''
To apply add to Meta 'order' iterable
'''
def __init__(self, *args, **kwargs):
super(OrderFormMixin, self).__init__(*args, **kwargs)
field_order = getattr(self.meta, 'order', [])
if field_order:
visited = []
new_fields = OrderedDict()
for field_name in field_order:
if field_name in self._fields:
new_fields[field_name] = self._fields[field_name]
visited.append(field_name)
for field_name in self._fields:
if field_name in visited:
continue
new_fields[field_name] = self._fields[field_name]
self._fields = new_fields
# ...
class MyModelForm(OrderFormMixin, ModelForm):
class Meta:
model = MyModel
order = ('field1', 'field2', )
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment