Saya telah melihat banyak diskusi tentang penggunaan Django-guardian dengan Django-polymorphic, tetapi itu sangat membingungkan bagi saya.
Bayangkan kasus ini:
class FeedPost(PolymorphicModel):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
class ArticleFeedPost(FeedPost):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
Dengan django-guardian 1.4.6, saat Anda menyetel izin ke ArticleFeedPost, izin ini tidak berlaku untuk FeedPost.
Di doc, ada ini tentang objek polimorfik:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Tetapi tidak ada contoh yang menjelaskan cara menggunakan get_default_content_type.
Pertanyaan saya adalah (omong-omong, saya minta maaf untuk mengajukan pertanyaan ini di sini, tetapi saya memiliki peluang lebih baik untuk mendapat balasan di sini daripada di tempat lain):
Halo,
Ini adalah masalah khusus django-polimorfik. django-polymorphic
berisi kode untuk dukungan django-guardian, jadi carilah dokumen django-polymorphic tentang dukungan.
Salam pembuka,
CC: @benkonrath
Mengenai masalah versi dengan senang hati mengumumkan bahwa itu menerima perhatian. Dalam rilis berikutnya akan diperbaiki. GUARDIAN_GET_CONTENT_TYPE
dirilis di Django 1.4.6.
@BenDevelopment Fungsi untuk mengambil tipe konten model dasar baru-baru ini digabungkan menjadi Django-polimorfik. Menggunakan tipe konten model dasar akan membuat izin wali berfungsi pada model dasar. Anda hanya perlu menambahkan pengaturan ini jika Anda menggunakan versi terbaru dari Django-guardian dan versi terbaru dari Django-polymorphic dari git:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'
Anda juga dapat menyalin & menempelkan kode get_polymorphic_base_content_type
ke dalam proyek Anda sendiri jika Anda tidak ingin menggunakan versi git terbaru dari Django-polymorphic.
Berikut adalah dokumen yang belum dirilis:
https://django-polymorphic.readthedocs.io/en/latest/third-party.html#django -guardian-support
@BenDevelopment Koreksi, pengaturannya harus:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'
Saya akan membuat PR ke polimorfik untuk memperbaikinya di dokumen.
Terima kasih kawan! Semua berfungsi dengan baik 👍 !