Ich habe viele Diskussionen über die Verwendung von Django-Guardian mit Django-Polymorphic gesehen, aber es ist für mich sehr verwirrend.
Stellen Sie sich diesen Fall vor:
class FeedPost(PolymorphicModel):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
class ArticleFeedPost(FeedPost):
class Meta:
default_permissions = ('add', 'change', 'delete', 'view')
Wenn Sie in django-guardian 1.4.6 Berechtigungen für ArticleFeedPost festlegen, gelten diese Berechtigungen nicht für FeedPost.
Im Doc steht folgendes über polymorphe Objekte:
http://django-guardian.readthedocs.io/en/stable/configuration.html?highlight=polymorph#guardian -get-content-type
Aber es gibt kein Beispiel, das beschreibt, wie get_default_content_type verwendet wird.
Meine Fragen sind (übrigens tut es mir leid, diese Fragen hier zu stellen, aber ich habe hier eine bessere Chance auf eine Antwort als anderswo):
Hallo,
Es ist ein django-polymorphes Problem, das spezifisch ist. django-polymorphic
enthält Code für die Unterstützung von django-guardian, also suchen Sie nach django-polymorphen Dokumenten zur Unterstützung.
Grüße,
CC: @benkonrath
In Bezug auf die Versionsverwaltung freut sich bekannt zu geben, dass es die Aufmerksamkeit akzeptiert. In den nächsten Versionen wird korrigiert. GUARDIAN_GET_CONTENT_TYPE
wurde in Django 1.4.6 veröffentlicht.
@BenDevelopment Die Funktion zum Abrufen des Inhaltstyps des Basismodells wurde erst kürzlich in django-polymorphic zusammengeführt. Wenn Sie den Inhaltstyp des Basismodells verwenden, funktionieren die Wächterberechtigungen für das Basismodell. Sie müssen diese Einstellung nur hinzufügen, wenn Sie die neueste veröffentlichte Version von django-guardian und die neueste Version von django-polymorphic von git verwenden:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.get_polymorphic_base_content_type'
Sie können den get_polymorphic_base_content_type
Code auch kopieren und in Ihr eigenes Projekt einfügen, wenn Sie nicht die neueste Git-Version von django-polymorphic verwenden möchten.
Hier sind die unveröffentlichten Dokumente:
https://django-polymorphic.readthedocs.io/en/latest/third-party.html#django -guardian-support
@BenDevelopment Correction, die Einstellung sollte sein:
GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type'
Ich werde eine PR zu polymorph machen, um dies in den Dokumenten zu beheben.
Danke Jungs! Alles funktioniert gut 👍 💯 !