Управление отношениями ManyToMany в админ-панели 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 ответ

Решение

Деформация может делать встроенные формы в виде последовательностей.

Однако, поскольку автоматическое создание форм из отношений ManyToMany является сложным, вам необходимо вручную создать схему Deform.

Вы можете сделать это, переопределив FormView.create_form(), который возвращает deform.Form Объект с вашей пользовательской схемой с последовательностями.

Затем вам также необходимо переопределить Edit.save_changes() и / или Add.build_object(), которые будут читать входящие appstruct (dict) и создавать или обновлять объекты в связях ManyToMany.

Другие вопросы по тегам