在Websauna管理面板中管理ManyToMany关系

时间:2017-01-31 15:45:28

标签: sqlalchemy colander deform colanderalchemy websauna

我有一个很多ManyToMany连接的模型。我需要一种从管理面板管理的智能方法。在创建广告系列模型时,我需要连接到其他模型。 Websauna有类似Django Inline foms的东西吗?

class Campaign(Base, BaseMixin):
    name = Column(String())
    created_at = Column(UTCDateTime, default=now, nullable=False)
    updated_at = sa.Column(UTCDateTime, onupdate=now)
    owner_id = Column(ForeignKey('users.id'))

    workers = relationship('Worker',
                           secondary=CampaignWorker.__table__,
                           back_populates='campaign')
    recipients = relationship('Recipient',
                              secondary=CampaignRecipient.__table__,
                              back_populates='campaign')
    accounts = relationship('Account',
                            secondary=CampaignAccount.__table__,
                            back_populates='campaign')
    messages = relationship('Message',
                            back_populates='campaign')

    message_deliveries = relationship('MessageDelivery',
                                      secondary=CampaignMessageDelivery.__table__,
                                      back_populates='campaign')

1 个答案:

答案 0 :(得分:1)

变形可以inline forms as sequences

但是,由于从ManyToMany关系自动生成表单很复杂,您需要手动构建Deform架构。

您可以通过覆盖FormView.create_form()覆盖自定义架构的deform.Form对象来执行此操作。

然后,您还需要覆盖将读取传入的appstruct(dict)的Edit.save_changes()和/或Add.build_object(),以及在ManyToMany关系中创建或更新对象。