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

Manage ManyToMany relationship in Websauna Admin Panel

我有一个模型,其中有很多 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')

变形可以做到inline forms as sequences.

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

您可以通过使用带有序列的自定义模式覆盖 FormView.create_form() returns 一个 deform.Form 对象来做到这一点。

然后,您还需要重写 Edit.save_changes() and/or Add.build_object(),它将读取传入的 appstruct (dict) 并在 ManyToMany 关系中创建或更新对象。