Django-guardian: django-多态问题

创建于 2016-09-20  ·  5评论  ·  资料来源: django-guardian/django-guardian

我已经看到很多关于 django-guardian 与 django-polymorphic 一起使用的讨论,但这对我来说非常混乱。
想象一下这个案例:

class FeedPost(PolymorphicModel):  
    class Meta: 
        default_permissions = ('add', 'change', 'delete', 'view')  


class ArticleFeedPost(FeedPost):
    class Meta: 
        default_permissions = ('add', 'change', 'delete', 'view')

在 django-guardian 1.4.6 中,当您为 ArticleFeedPost 设置权限时,这些权限不适用于 FeedPost。
在文档中,有关于多态对象的内容:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
但是没有描述如何使用 get_default_content_type 的示例。
我的问题是(顺便说一下,我很抱歉在这里提出这些问题,但我在这里比在其他地方有更好的机会得到答复):

  • 我们如何将权限传播到“父”多态对象?
  • 我们如何获得guardian 1.5版本(我对django包版本控制不是很熟悉。1.5版本已经发布了吗?当我运行“pip install --upgrade django-guardian”时,pip说1.4.6是最后一个版本。通过下载这个 repo 手动升级是个好主意吗?)?

所有5条评论

你好,

这是特定于 django 多态性的问题。 django-polymorphic包含支持 django-guardian 的代码,因此请查找有关支持的 django-polymorphic 文档。

你好,

抄送: @benkonrath

关于版本控制的问题很高兴地宣布它接受了关注。 在接下来的版本中将得到更正。 GUARDIAN_GET_CONTENT_TYPE在 Django 1.4.6 中发布。

@BenDevelopment检索基本模型内容类型的函数最近才合并到 django-polymorphic 中。 使用基本模型内容类型将使监护人权限适用于基本模型。 如果您使用的是最新发布的 django-guardian 版本和来自 git 的最新版本的 django-polymorphic,则只需添加此设置:

 GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'

如果您不想使用 django-polymorphic 的最新 git 版本,您也可以将get_polymorphic_base_content_type代码复制并粘贴到您自己的项目中。

以下是未发布的文档:

https://django-polymorphic.readthedocs.io/en/latest/third-party.html#django -guardian-support

@BenDevelopment更正,设置应该是:

GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'

我将在文档中创建一个多态的 PR 来解决这个问题。

谢谢你们! 一切顺利👍💯!

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Allan-Nava picture Allan-Nava  ·  4评论

lukaszb picture lukaszb  ·  14评论

johnthagen picture johnthagen  ·  9评论

Dzejkob picture Dzejkob  ·  28评论

ad-m picture ad-m  ·  13评论