لقد رأيت العديد من المناقشات حول استخدام 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 حول الدعم.
تحيات،
CC: @ benkonrath
فيما يتعلق بقضايا الإصدار يسرها أن تعلن أنها تقبل الاهتمام. في الإصدارات القادمة سيتم تصحيحها. GUARDIAN_GET_CONTENT_TYPE
في django 1.4.6.
BenDevelopment تم مؤخرًا دمج وظيفة استرداد نوع محتوى النموذج الأساسي في django-polymorphic. سيؤدي استخدام نوع محتوى النموذج الأساسي إلى جعل أذونات الوصي تعمل على النموذج الأساسي. تحتاج فقط إلى إضافة هذا الإعداد إذا كنت تستخدم أحدث إصدار تم إصداره من django-guardian وأحدث إصدار من django-polymorphic من git:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'
يمكنك أيضًا نسخ ولصق رمز get_polymorphic_base_content_type
في مشروعك الخاص إذا كنت لا تريد استخدام أحدث إصدار git من django-polymorphic.
فيما يلي المستندات التي لم يتم إصدارها:
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 إلى متعدد الأشكال لإصلاح هذا في المستندات.
شكرا يا رفاق! كل شيء يعمل بشكل جيد 👍 💯!