django-polymorphicでのdjango-guardianの使用について多くの議論を見てきましたが、それは私にとって非常に混乱しています。
この場合を想像してみてください。
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-polymorphicの問題です。 django-polymorphic
は、django-guardianをサポートするためのコードが含まれているため、サポートに関するdjango-polymorphicドキュメントを探してください。
ご挨拶、
CC: @benkonrath
バージョン管理の問題については、注目を集めていることをお知らせします。 次のリリースでは修正される予定です。 GUARDIAN_GET_CONTENT_TYPE
はdjango1.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 Correction、設定は次のようになります。
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'
ドキュメントでこれを修正するために、ポリモーフィックへのPRを作成します。
君たちありがとう! すべてうまくいきます👍💯!