Djangocms - данные не отображаются на опубликованной странице, доступны в режиме редактирования?

Я пытаюсь настроить плагин djangocms для работы с FAQ. Когда я нахожусь в режиме редактирования, все работает. Я могу видеть FAQ.

Когда я переключаюсь на опубликованную страницу, FAQ не отображаются.

Просматривая queryset в режиме редактирования, у меня есть FAQ, но в режиме публикации набор вопросов FAQ пуст.

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

models.py

from django.db import models
from cms.models.pluginmodel import CMSPlugin


class FAQPluginModel(CMSPlugin):
    title = models.CharField(max_length=255, default="FAQs")

    def __str__(self):
        return self.title


class FAQItem(models.Model):
    plugin = models.ForeignKey(FAQPluginModel, related_name="faq_items", on_delete=models.CASCADE)
    question = models.CharField(max_length=255)
    answer = models.TextField()

    def __str__(self):
        return self.question

plugins.py

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from django.utils.translation import gettext_lazy as _
from .models import FAQPluginModel
from .admin import FAQPluginModelAdmin, FAQItemInline


class FAQPluginPublisher(CMSPluginBase):
    model = FAQPluginModel
    module = _("FAQs")
    name = _("FAQ Plugin")
    render_template = "faq_plugin.html"
    # render_template = "faq_collapsible.html"
    admin_preview = False
    inlines = [FAQItemInline, ]

    def render(self, context, instance, placeholder):
        context.update({
            'instance': instance,
            'faq_items': instance.faq_items.all(),
        })
        print("faq_items:", context.get('faq_items'))
        return context

plugin_pool.register_plugin(FAQPluginPublisher)

Я перепробовал многие из предложенных решений:

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

Вот тот, который показался наиболее подходящим, но не могу заставить его работать.

Предполагается, что вы используете django-cms 3.x. Посмотрев на один из моих проектов с похожей структурой данных, я сделал следующее:

class FAQPluginModel(CMSPlugin):
    title = models.CharField(max_length=255, default="FAQs")

    faq_items = models.ManyToManyField(
        FAQItem,
        # I also defined a through model here
        # through='SomeThroughModelNameHere',
        related_name='faq_items',
        blank=True,
    )

    def __str__(self):
        return self.title

    def copy_relations(self, oldinstance):
        self.faq_items.set(oldinstance.faq_items.all()) 

Надеюсь, это поможет.

Вернуться на верх