我正在使用Flask-Admin,当我更新我的内容对象时,它会删除其关联查找表(content_products_table)中的所有项目。
因此,如果我有一个Content对象并且在其查找表(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将在Content表中设置为null。
答案 0 :(得分:0)
form_excluded_columns =('products')
需要明确排除对象属性。这似乎非常危险。