2

我正在使用 Flask-Admin,当我更新我的内容对象时,它会删除其关联查找表 (content_products_table) 中的所有项目。

因此,如果我在其查找表 (content_products_table) 中映射了一个内容对象和 7 个产品,则从内容到产品的所有映射在更新时都会被删除。

我相信这是因为我的产品列表在更新时是空的,但实际上我的产品列表可能有 1000 项长,所以我不想在更新之前加载它,只是根本不更新它。我觉得有一种方法可以配置 Flask-Admin 或 sqlalchemy 以忽略更新时的字段。

下面以我的对象为例:

content_products_table = db.Table('content_products', db.Model.metadata,
                       db.Column('content_id', db.Integer, db.ForeignKey('content.id')),
                       db.Column('product_id', db.Integer, db.ForeignKey('product.id'))
                       )

class Content(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    products = db.relationship('Product', secondary=content_products_table)

更新我的对象的代码示例:

form.populate_obj(model)
self._on_model_change(form, model, False)
self.session.commit()

任何信息都会有所帮助,因为我对这两个平台都是新手。谢谢!

编辑

我想更新当我的对象更新时,它会删除所有关系。因此,如果我有一个表用户对表内容具有一对多。当我更新用户时,内容表中的 user_id 将设置为 null。

4

1 回答 1

0

form_excluded_columns = ('产品')

需要明确排除对象属性。这似乎非常危险。

于 2014-01-04T05:45:02.023 回答