我已经看到很多关于 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 的示例。
我的问题是(顺便说一下,我很抱歉在这里提出这些问题,但我在这里比在其他地方有更好的机会得到答复):
你好,
这是特定于 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 来解决这个问题。
谢谢你们! 一切顺利👍💯!