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

Python 使用Flask、SQLAlchemy和WTForms更新多对多关系?,python,flask,sqlalchemy,flask-wtforms,Python,Flask,Sqlalchemy,Flask Wtforms,我想使用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):

我想使用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,我可以为一个人选择现有地址。但是我想以相同的形式添加新地址

我已经使用连接表的
FormField
对主要模型和子表单使用了
model\u form
,但我就是不知道如何更新所有内容,包括外键关系。对于显示的所有表单和子表单,页面应具有一个提交按钮

问题

  • 上述要求通常是如何在Flask中实现的
  • Django是否可以通过其管理界面更轻松地处理这种多对多场景

  • 我之前也遇到过类似的情况。我试图通过使用model_表单来解决这个问题,但它并不能完全解决动态添加新条目的问题,而且在处理关系时,我很难使用它

    在WTForms中使用QuerySelectField只会帮助您使用与现有地址对应的id、值对填充