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())
Надеюсь, это поможет.