我正在寻找一种在 wagtail.io 中实现双向 m2m 模型的方法。
- 一位作者可以写多篇文章
- 一篇文章可以有多个作者。
- 我可以在作者页面和帖子页面上设置/取消设置两个模型之间的关系
- 作者页面上设置的关系显示在帖子页面上,反之亦然。
在 Django Admin 中,我使用普通的 filter_horizontal m2m 小部件和自定义的 through 参数解决了这个问题:
模型.py:
class Author(models.Model):
posts = models.ManyToManyField('app.Post', blank=True, through=Post.authors.through)
class Post(models.Model):
authors = models.ManyToManyField('app.Author', blank=True)
我偶然发现了一种至少可以使用内联实现单向关系的方法,但是我看不到如何扭转这种情况来解决我的双向问题。
这是我在鹡鸰中走了多远:
在 models.py 类 PostPage(Page) 中,我定义了一个 InlinePanel:
InlinePanel('related_agents', label="Related Agents"),
然后进一步向下自定义模型(与此博客文章相比):
class PostPageRelatedAuthorItem(Orderable):
page = ParentalKey('PostPage', related_name='related_authors')
# one-to-one is the same as ForeignKey with unique=True
author = models.OneToOneField('thoughts.AgentPage')
panels = [
PageChooserPanel('author', 'app.AuthorPage'),
]
是否有双向方式,如果有,您能否帮助我提供一些提示 - 非常感谢。