当从编辑模式发布Djangocms插件时,html模板不会呈现模型对象。但内容重新出现时,切换到编辑模式

2024-05-12 15:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

事实上,我对Django cms世界还不熟悉。我试过几乎每一个重复的问题,但没有一个有效。我用一个ManyToManyField()创建了我的自定义插件

我查阅了Django文档中的多对多或外键与其他对象的关系,但没有起到任何作用。也许我在什么地方迷路了,我真的很感激任何帮助。谢谢你

Try1插件型号:

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

Try2插件型号:

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插件型号:

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\ U插件.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

公文包插件.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


Tags: selfdiv插件imgmodelcmspluginmodelsall