[英]Wtforms-alchemy field order
我在我的Tornado应用程序中使用wtforms-alchemy将SQLAlchemy模型呈现为HTML表单,如下所示:
class UserProfileForm(ModelForm):
class Meta:
model = models.User
only = ['username', 'first_name', 'last_name']
它工作正常,但表单上的字段按顺序last_name,username,first_name,这可能会让用户感到困惑。 有没有一种方法可以设置生成表单字段的特定顺序?
我做了这篇文章所建议的内容,并且它一直在为我完美地工作。
简而言之,添加一个指定正确排序的class关键字,然后使用正确顺序的字段从iter更新_unbound_fields。
您应该将表单的呈现方式放在模板中。
喜欢
{{ form.username }}
{{ form.first_name }}
{{ form.last_name }}
从ModelForm
继承时,解决方案https://stackoverflow.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.