Я хочу создать форму для отношений "многие ко многим", используя фласки, 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
для таблицы соединений, но я просто не могу понять, как обновлять все, включая отношения внешних ключей. На странице должна быть одна кнопка отправки для всех форм и субформ.
Вопросы
- Как обычно выполняются вышеуказанные требования в Flask?
- Является ли этот сценарий "много ко многим" тем, что Django может легко обрабатывать через свой интерфейс администратора?