При публикации плагина django-cms из режима редактирования HTML-шаблон не отображает объекты модели. Но контент появляется снова при переключении в режим редактирования - PullRequest
0 голосов
/ 20 июня 2019

На самом деле, я новичок в мире Django-cms. Я попробовал почти каждый дубликат этого же вопроса, но ни один из них не сработал. Я создал свой собственный плагин только с одним ManyToManyField ().

Я прошел через Django-docs. Относился ко многим или многим, или связывал внешние ключи с другими объектами, но это не помогло. Может быть, я где-то потерялся, я бы очень признателен за любую помощь. Спасибо.

Try1 PluginModel:

class PortfolioPluginModel(CMSPlugin):
    portfolio = models.ManyToManyField(Portfolio)

Try2 PluginModel:

class PortfolioPluginModel(CMSPlugin):
    portfolio = models.ManyToManyField(Portfolio)

    def copy_relations(self, oldinstance):
        for p in oldinstance.portfolio.all():
            p.pk = None
            p.plugin = self
            p.save()

Try3 PluginModel:

class PortfolioPluginModel(CMSPlugin):
    portfolio = models.ManyToManyField(Portfolio)

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

Приложения Модель:

class Portfolio(models.Model):
    author = models.CharField(max_length = 100)
    description = models.TextField()
    image = models.ImageField(upload_to ='portfolioImage',blank = True, null = True)
    published_at = models.DateTimeField(auto_now_add = True)

cms_plugins.py

@plugin_pool.register_plugin  # register the plugin
class PortfolioPluginPublisher(CMSPluginBase):
    model = PortfolioPluginModel  # model where plugin data are saved
    # model = Portfolio(CMSPlugin)
    module = _("Portfolio")
    name = _("Portfolio Plugin")  # name of the plugin in the interface
    render_template = "portfolio_cms_integration/portfolio_plugin.html"
    cache = False

    def render(self, context, instance, placeholder):
        context.update({'instance': instance})
        return context

portfolio_plugin.html

<div class="filters-content">
            <div class="row grid">
                {% for p in instance.portfolio.all %}
                <div class="single-portfolio col-sm-4 all vector">
                    <div class="relative">
                        <div class="thumb">
                            <div class="overlay overlay-bg"></div>
                            <img class="image img-fluid" src="{{ p.image.url }}" alt="" style="width:399px; height: 400px;">
                        </div>
                        <a href="{{ p.image.url }}" class="img-pop-up">
                            <div class="middle">
                                <div class="text align-self-center d-flex"><img src="{% static 'img/preview.png' %}"
                                        alt=""></div>
                            </div>
                        </a>
                    </div>
                    <div class="p-inner">
                        <h4>{{ p.author }}</h4>
                        <div class="cat">{{ p.description }}</div>
                    </div>
                </div>
                {% endfor %}
        </div>

Ожидаемый результат: When I publish my post I should see my model objects of portfolio app Фактическая мощность: When I publish my post I dont see any model objects of portfolio app

...