2015-11-14 4 views
1

Я ищу способ реализовать двунаправленные модели m2m в wagtail.io.wagtail: Как сделать двусторонние отношения модели страницы?

  • Один автор может написать несколько сообщений и
  • один пост может иметь несколько авторов.
  • Я могу установить/снять связь между двумя моделями как на странице автора, так и на странице сообщений
  • Ссылка, указанная на странице «Автор», отображается на странице «Почта» и наоборот.

В Django администратора Я решил это с помощью обычного filter_horizontal 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 (Page) я определил 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'), 
    ] 

есть ли двунаправленный путь, и если да, не могли бы вы помочь мне вместе с некоторыми намеками - большое спасибо заранее.

+0

Заканчивать https://github.com/gregmuellegger/django-sortedm2m, библиотека, которая поставляет Сортируемый типа M2M поле. В администраторе Wagtail добавьте любое отсортированное поле m2m с помощью FieldPanel (не InlinePanel). Я использовал это поле с Wagtail, и он работает хорошо. См. Также этот предыдущий вопрос: http://stackoverflow.com/questions/33651722/nested-categories-inlinepanels-in-wagtail/33980133#33980133 –

ответ

0

Из-за некоторых ограничений вокруг django-modelcluster вы не можете использовать поля M2M с Wagtail. Вы должны специально настроить «сквозную» модель в основном.

Вы можете найти всю информацию, вам нужно здесь http://www.tivix.com/blog/working-wagtail-i-want-my-m2ms/