在 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 关系中创建或更新对象。
我有一个模型,其中有很多 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 关系中创建或更新对象。