繁体   English   中英

Wtforms-alchemy字段顺序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM