Django CMS:无需ForiengKey即可插入应用程序

时间:2018-12-03 14:54:40

标签: python django django-cms

我是CMS Django的新手,我正在尝试创建一个将与Blog应用连接的插件。我想在每页上显示5篇最新博客文章。问题是每个插件实例都必须从博客应用程序连接到某个实例,因为在我们的模板中,我们将使用instanceinstance.article.all()之类的插件instance.blog.article.all()

是否可以在不使用Article的{​​{1}}的情况下将BlogPlugin的实例放入我的instance模板的模板中?

谢谢。

1 个答案:

答案 0 :(得分:2)

您不需要将该插件连接到博客。您可以在插件的render方法中获取对象。 render方法有点像视图的get_context_data。例如,您可以在该方法中添加所需的插件;

class BlogPlugin(CMSPluginBase):
    ...

    def render(self, context, instance, placeholder):
        context = super(MyPlugin, self).render(context, instance, placeholder)

        # If you know that the higher the `id`, the newer the object, 
        # this gets the latest 5 by ID in reverse order
        context['articles'] = Article.objects.all().order_by('-id')[:5]

        return context