Django CMS 用户无权添加插件

Posted

技术标签:

【中文标题】Django CMS 用户无权添加插件【英文标题】:Django CMS user can't have permissions to add plugins 【发布时间】:2017-04-24 21:38:23 【问题描述】:

我有一个 Django-CMS 站点,我在其中创建了一个 Articles 模型来添加新闻、事件和其他材料。这个模型有一个内容字段,它是一个 PlaceholderField,因此用户可以将他们想要的插件添加到每篇文章中。问题是我创建了一个没有超级用户状态的用户,但给了他我创建/编辑用户时出现的所有权限。但是这个用户不能向这个模型添加插件。他可以将插件添加到 cms 页面,但不能添加到此模型。我需要为这种情况创建某种许可吗?我该怎么做?

我的模特:

class Articles(models.Model):

    objects = ArticlesManager()

    id = models.AutoField(db_column='ID', primary_key=True)

    sites = models.ManyToManyField(Site, verbose_name=_(u'Show in Sites'), related_name='articles_to_show')

    type = models.ForeignKey('Types', db_column='TYPE_ID',
                             related_name='type', verbose_name=_(u'Type'))

    content = PlaceholderField('ipp_article_content',
                               related_name='IPP_ARTICLE_CONTENT')

    class Meta:
        app_label = 'cms_ipportalegre'
        db_table = 'ipp_articles'
        verbose_name = _(u'Article')
        verbose_name_plural = _(u'Articles')
        permissions = (
            ("view_articles", _(u"Can view Articles")),
        )

在我的模板中:

<p>% render_placeholder object.content language placeholder_language %</p>

【问题讨论】:

【参考方案1】:

我发现了问题。我在我的 admin.py 中有一个 ArticleAdmin 和 ArticleAdminForm 的配置,我在排除字段中定义了“内容”。

class ArticleAdminForm(ModelForm):
    class Meta:
        model = models.Articles
        exclude = ["title", "description", "content" , "creation_date", "site", "slug", "counter"]

    def __init__(self, *args, **kwargs):
        super(ArticleAdminForm, self).__init__(*args, **kwargs)

class ArticleAdmin(PlaceholderAdminMixin, FrontendEditableAdminMixin, admin.ModelAdmin):
    form = ArticleAdminForm
    frontend_editable_fields = ("sites", "featured_image", "article_image", "title_pt", "title_en", "title_es", "title_fr")

当我从exclude 中删除content 时,一切都开始正常工作了。

【讨论】:

以上是关于Django CMS 用户无权添加插件的主要内容,如果未能解决你的问题,请参考以下文章

Django-CMS 自定义插件未在已发布页面中显示数据

Wagtail Cms是否支持Google登录和用户登录添加会话

Django CMS 插件自定义模板

Django cms 文本编辑器 (CKEditor) 插件

Django-cms Placeholderfield 不工作,抛出 lambda 异常

Django CMS:基于所选插件的页面内导航菜单