wagtail:如何建立双向页面模型关系?

时间:2015-11-14 19:05:48

标签: wagtail

我正在寻找一种在wagtail.io中实现双向m2m模型的方法。

  • 一位作者可以写多篇帖子和
  • 一个帖子可以有多个作者。
  • 我可以在作者页面和帖子页面上设置/取消设置两个模型之间的关系
  • “作者”页面上设置的关系显示在“帖子”页面上,反之亦然。

在Django Admin中,我使用普通的filter_horizo​​ntal m2m小部件和自定义通过参数解决了这个问题:

models.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)

I stumbled upon an approach that at least enables a one-way relation using inlines但我无法看到如何解决这个问题以解决我的双向问题。

这是我陷入困境的原因:

在models.py类PostPage(页面)中,我定义了一个InlinePanel:

InlinePanel('related_agents', label="Related Agents"),

然后进一步关闭自定义直通模型(compare to this blog post):

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'),
   ]  

是否有双向方式,如果是,您可以帮助我提供一些提示 - 非常感谢提前。

1 个答案:

答案 0 :(得分:0)

由于django-modelcluster的一些限制,你不能使用Wagtail的M2M字段。你必须基本上专门设置“通过”模型。

您可以在http://www.tivix.com/blog/working-wagtail-i-want-my-m2ms/

找到所需的所有信息