Django CMS:无需 ForiengKey 的应用程序插件
Django CMS: Plugin to app without ForiengKey
我是 CMS Django 的新手,我正在尝试创建一个将连接到 Blog
应用程序的插件。我想在每一页上显示 5 篇最新的博客文章。问题是每个插件实例都必须连接到博客应用程序中的某个实例,因为在我们的模板中,我们将使用 instance
插件,例如:instance.article.all()
或 instance.blog.article.all()
.
是否有一些选项可以在不使用 BlogPlugin
的 instance
的情况下将 Article
的实例放入我的 BlogPlugin
模板的模板中?
谢谢。
您不需要将插件连接到博客。您可以在插件的渲染方法中获取对象。 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
我是 CMS Django 的新手,我正在尝试创建一个将连接到 Blog
应用程序的插件。我想在每一页上显示 5 篇最新的博客文章。问题是每个插件实例都必须连接到博客应用程序中的某个实例,因为在我们的模板中,我们将使用 instance
插件,例如:instance.article.all()
或 instance.blog.article.all()
.
是否有一些选项可以在不使用 BlogPlugin
的 instance
的情况下将 Article
的实例放入我的 BlogPlugin
模板的模板中?
谢谢。
您不需要将插件连接到博客。您可以在插件的渲染方法中获取对象。 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