Flask,WTForms:编辑和创建表单规则不同时出错

2024-09-30 22:26:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在网络应用程序中使用Flask和WTForms。我有一个数据库模型,一个窗体和一个sqla.ModelView模型像这样:

class Users(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.INTEGER, primary_key=True)
    name = db.Column(db.String, nullable=False)
    last_name = db.Column(db.String, nullable=False)

class UsersForm(form.Form):
    id = fields.IntegerField('Id')
    name = fields.StringField('Name')
    last_name = fields.StringField('Last Name')

class UsersAdmin(sqla.ModelView):
    column_list = ['id', 'name', 'last_name']
    form = UsersForm
    form_create_rules = column_list
    form_edit_rules = ['name', 'last_name']

但它不起作用,因为这个错误:

ValueError: Form <__main__.UsersForm object at 0x7f5039c48710> does not have field name

但是,当form\u edit\u rules等于form\u create rules时,它可以完美地工作!你知道吗


Tags: name模型formidfieldsdbstringcolumn
1条回答
网友
1楼 · 发布于 2024-09-30 22:26:44

我在flask admin github issuelist上发现,表单规则只影响表单的显示方式,而不影响表单本身。你知道吗

不需要在flask admin中创建窗体实例。我建议让您的数据库处理id,因为它会自动递增。以我的经验,flask admin甚至不显示id字段。你知道吗

如果确实希望仅在创建窗体上具有可编辑的id字段,可以使用以下代码使该字段在编辑窗体上为只读:

class UsersAdmin(sqla.ModelView):
    def on_form_prefill(self, form, id):
        form.id.render_kw = {'readonly': True}

    column_list = ['id','name','last_name']
    form = UsersForm

相关问题 更多 >