gpt4 book ai didi

python - 使用 Flask、SQLAlchemy 和 WTForms 更新多对多关系?

转载 作者:太空狗 更新时间:2023-10-29 16:58:17 25 4
gpt4 key购买 nike

我想使用代表这些模型的 Flask、SQLAlchemy 和 WTForms 为多对多关系创建一个表单:

personaddress = db.Table('personaddress',
db.Column('person', db.Integer, db.ForeignKey('person.id')),
db.Column('address', db.Integer, db.ForeignKey('address.id'))
)

class Person(db.Model):
__tablename__ = "person"
id = db.Column(Integer, primary_key=True)
name = db.Column(String, nullable=False)
addresses = db.relationship('Address', secondary=personaddress, backref=db.backref('person', lazy='dynamic'))

class Address(db.Model):
__tablename__ = "address"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String, nullable=False)

要求

现在我想创建一个包含表单的页面以实现以下目的:

  • 添加/编辑/删除一个人
  • 添加/编辑/删除地址
  • 添加/编辑/删除人与地址之间的关系

重要要求:使用 QuerySelectField,我可以为一个人选择现有地址。但我想以相同的形式添加新地址。

我已经尝试过使用 model_form 作为主要模型和使用 FormField 作为联结表的子表单,但我只是不知道如何更新所有内容,包括外键关系。该页面应该有一个用于显示所有表单和子表单的提交按钮。

问题

  1. 通常如何在 Flask 中实现上述要求?
  2. Django 可以通过其管理界面更轻松地处理这种多对多场景吗?

最佳答案

我之前也遇到过类似的事情。我试图通过使用 model_form 来解决它,但它并没有完全解决动态添加新条目的问题,而且在处理关系时我很难使用它。

在 WTForms 中使用 QuerySelectField 只会帮助您填充例如。一个

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com