加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何访问Django-CMS插件的父模型

发布时间:2020-12-20 11:53:00 所属栏目:Python 来源:网络整理
导读:我创建了2个 django-cms插件,一个父“容器”,可以包含多个子“内容”插件. 当我保存子插件时,我想访问父插件的模型. from cms.plugin_pool import plugin_poolfrom cms.plugin_base import CMSPluginBasefrom .models import Container,Contentclass Contain
我创建了2个 django-cms插件,一个父“容器”,可以包含多个子“内容”插件.

当我保存子插件时,我想访问父插件的模型.

from cms.plugin_pool import plugin_pool
from cms.plugin_base import CMSPluginBase

from .models import Container,Content

class ContainerPlugin(CMSPluginBase):
    model = Container
    name = "Foo Container"
    render_template = "my_package/container.html"
    allow_children = True
    child_classes = ["ContentPlugin"]

class ContentPlugin(CMSPluginBase):
    model = content
    name = "Bar Content"
    render_template = "my_package/content.html"
    require_parent = True
    parent_classes = ["ContainerPlugin"]
    allow_children = True

    def save_model(self,request,obj,form,change):
        response = super(ContentPlugin,self).save_model(
            request,change
        )

        # here I want to access the parent's (container) model,but how?

        return response

plugin_pool.register_plugin(ContainerPlugin)
plugin_pool.register_plugin(ContentPlugin)

obj是当前的插件实例,所以我可以获得这个模型的所有属性,但我无法弄清楚如何访问父插件模型.有obj.parent,但据我所知,它不是插件实例.还尝试使用self.cms_plugin_instance和obj.parent.get_plugin_instance(),但没有成功.

有什么建议?

解决方法

给定一个插件实例,instance.get_plugin_instance()方法返回一个包含以下内容的元组:

> instance – 插件实例
> plugin – 相关的插件类实例
get_plugin_instance

所以像这样得到父对象:

instance,plugin_class = object.parent.get_plugin_instance()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读