Sqlalchemy Flask管理员:为什么QuerySelectField在自定义编辑视图中不起作用?

Sqlalchemy Flask管理员:为什么QuerySelectField在自定义编辑视图中不起作用?,sqlalchemy,flask-admin,Sqlalchemy,Flask Admin,我有以下问题: 在stack Flask、Sqlalchemy和Flask Admin上创建了以下模型: class Store(db.Model): id = db.Column(db.Integer, primary_key=True) address = db.Column(db.String(200)) users = db.relationship('User', backref='store', lazy='dynamic') class User(Use

我有以下问题: 在stack Flask、Sqlalchemy和Flask Admin上创建了以下模型:

class Store(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    address = db.Column(db.String(200))

    users = db.relationship('User', backref='store', lazy='dynamic')

class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    store_id = db.Column(db.Integer, db.ForeignKey('store.id'))
    name = db.Column(db.String(128))
    login = db.Column(db.String(20))
    password = db.Column(db.String(20))
我使用以下表格和视图:

class UserForm(FlaskForm):
    store_id = QuerySelectField('Склад', query_factory=lambda: Store.query)
    name = StringField('Name')
    login = StringField('Login')
    password = StringField('Password')

class AdminSet(AdminModelView):
    def edit_form(self, obj=None):
        form = UserForm(obj=obj)
        return form
视图正常工作,但当我尝试保存更改时,出现以下错误:

Failed to update record. (psycopg2.ProgrammingError) can't adapt type 'Store' [SQL: UPDATE "user" SET    store_id=%(store_id)s WHERE "user".id = %(user_id)s] [parameters: {'store_id': <Store 2>, 'user_id': 2}] (Background on this error at: http://sqlalche.me/e/f405)
更新记录失败。(psycopg2.ProgrammingError)无法调整类型“Store”[SQL:更新“user”设置Store_id=%(Store_id)s其中的“user”.id=%(user_id)s][参数:{Store_id':,'user_id':2}](此错误的背景信息位于:http://sqlalche.me/e/f405)
为什么会发生这种情况?我做错了什么?

来自:

data属性实际上将存储/保留ORM模型实例,而不是ID

将表单定义更改为以下内容:

class UserForm(FlaskForm):
    store = QuerySelectField('Склад', query_factory=lambda: Store.query)
    name = StringField('Name')
    login = StringField('Login')
    password = StringField('Password')