CategoryManyToManyField настраивается на пустой QuerySet в режиме без редактирования - PullRequest
0 голосов
/ 09 января 2019

Я пишу новый плагин для приложения aldryn_newsblog. Я хочу перечислить статьи по категориям. Плагин принимает список категорий, используя CategoryManyToManyField.

Плагин отображает статьи с запрошенными категориями только в режиме редактирования. Как только я публикую страницу с новым добавленным плагином, он не отображает ни одной статьи. Я проверил, что self.categories.all() становится пустым.

Почему это происходит? Это для;

aldryn-newsblog2.1.1
Django==1.11.17
django-cms==3.5.3

Он действует одинаково на локальном сервере разработки django и на удаленном apache

class NewsBlogCategoryPlugin(PluginEditModeMixin, AdjustableCacheModelMixin, NewsBlogCMSPlugin):
        ....
        categories = CategoryManyToManyField('aldryn_categories.Category', verbose_name=_('categories'), blank=True)
        ....
        def get_articles(self, request):

            print (self.categories.all())
            queryset = Article.objects
            main_qs = queryset.all().filter(categories = 
                self.categories.all())
            return main_qs

Ответы [ 2 ]

0 голосов
/ 10 января 2019

Спасибо @Daniele. Я только что добавил после отношения обработки

def copy_relations(self, oldinstance):
    self.categories = oldinstance.categories.all()

А теперь работает

0 голосов
/ 09 января 2019

Я считаю, что проблема заключается в следующем:

  • когда ваша страница публикуется, экземпляр плагина копируется
  • в опубликованной версии страницы теперь есть новый экземпляр плагина
  • этот новый экземпляр плагина не имеет отношения к Categories, как у оригинала

Вы должны убедиться, что когда копируется плагин, то же самое происходит и с его отношениями.

См. Обработка отношений в документации по django CMS.

...