He visto muchas discusiones sobre el uso de django-guardian con django-polymorphic, pero es muy confuso para mí.
Imagina este caso:
class FeedPost(PolymorphicModel):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
class ArticleFeedPost(FeedPost):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
Con django-guardian 1.4.6, cuando establece permisos en ArticleFeedPost, estos permisos no se aplican a FeedPost.
En el documento, hay esto sobre objetos polimórficos:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Pero no hay ningún ejemplo que describa cómo usar get_default_content_type.
Mis preguntas son (por cierto, lamento hacer estas preguntas aquí, pero tengo más posibilidades de tener una respuesta aquí que en cualquier otro lugar):
Hola,
Es un problema polimórfico de django específico. django-polymorphic
contiene código para soporte django-guardian, así que busque documentos polimórficos de django sobre soporte.
Saludos,
CC: @benkonrath
En cuanto a cuestiones de control de versiones se complace en anunciar que acepta la atención. En las próximas versiones se corregirá. GUARDIAN_GET_CONTENT_TYPE
fue lanzado en django 1.4.6.
@BenDevelopment La función para recuperar el tipo de contenido del modelo base se fusionó recientemente en django-polymorphic. El uso del tipo de contenido del modelo base hará que los permisos de tutor funcionen en el modelo base. Solo necesita agregar esta configuración si está utilizando la última versión publicada de django-guardian y la última versión de django-polymorphic de git:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'
También puede copiar y pegar el código get_polymorphic_base_content_type
en su propio proyecto si no desea utilizar la última versión de git de django-polymorphic.
Aquí están los documentos inéditos:
https://django-polymorphic.readthedocs.io/en/latest/third-party.html#django -guardian-support
@BenDevelopment Correction, la configuración debe ser:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'
Voy a hacer un PR a polimórfico para arreglar esto en los documentos.
¡Gracias chicos! ¡Todo funciona bien 👍 💯!