Wtforms-炼丹字段顺序
问题描述:
我使用wtforms - 炼金术在我的龙卷风应用渲染SQLAlchemy的模式,以HTML形式是这样的:Wtforms-炼丹字段顺序
class UserProfileForm(ModelForm):
class Meta:
model = models.User
only = ['username', 'first_name', 'last_name']
它工作得很好,但表单上的字段是为了姓氏,用户名,名字,这可能会让用户感到困惑。有没有办法设置生成的表单字段的特定顺序?
答
您应该将表单的渲染放在模板中。
像
{{ form.username }}
{{ form.first_name }}
{{ form.last_name }}
答
解决方案https://*.com/a/18475322/892040从ModelForm
继承时不起作用。然而,这确实有效:
class ItemReview(ModelForm):
class Meta:
model = Item
_field_order = ['field1', 'field2']
def __init__(self, *args, **kwargs):
super(ItemReview, self).__init__(*args, **kwargs)
field_order = getattr(ItemReview, '_field_order')
visited = []
if field_order:
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
感谢您的回应!但是,如果只是这么简单...... 请参阅我正在以自动方式呈现所有表格(我有相当多的表格),如下所示: '{%for field in form%}