Ich möchte eine can_view
Meta-Berechtigung für jedes Modell in meiner Django App hinzufügen.Gibt es eine Möglichkeit, eine Meta-Berechtigung für jedes Modell in einer Django-App anzuwenden?
Ziemlich viel möchte ich dies in models.py
zu jeder Klasse hinzuzufügen
class Meta:
permissions = [ ("can_view", "Can view {something}".format(something = self.verbose_name) ]
Ich bin nicht einmal sicher, ob self.verbose_name
auch wie in diesem Fall funktionieren würde ....
Ist das möglich ?
Bonus Frage: Sobald ich eine Genehmigung innerhalb des Meta
Modell hinzufügen, dann kann ich es mit has_perm
direkt anrufen? Wie
if request.user.has_perm('polls.can_view') :
# Show a list of polls.
else :
# Say "Insufficient permissions" or something.
Ich habe mich gefragt, aber am Ende habe ich nur eine Handvoll Modelle, die eine Detailansicht haben, also habe ich nicht versucht, die Ansichtserlaubnis für alle Modelle zu aktivieren. Aber ich verstehe, dass es bei einem Projekt mit vielen Detailansichten mühsam sein kann, eins nach dem anderen zu tun. Auf der anderen Seite habe ich eine Basissichtklasse erstellt, die von dieser Berechtigungsprüfung erbt: https://gist.github.com/97b3a0f17aa6e4d35da8, das könnte helfen. Wenn Sie django-guardian nicht verwenden, können Sie es leicht anpassen. Außerdem: Vergessen Sie nicht, Ihre Fragen mit der Sprache zu markieren (ich habe das Python-Tag hinzugefügt) – jpic
@jpic Ya, ich habe mich gefragt, warum Django 'can_view' nicht als eine ihrer Standardberechtigungen verwendet. Nun, ich habe nur 5 Modelle, die diese Berechtigungen benötigen. Vielleicht könnte ich Djangos "models.Model" -Klasse außer Kraft setzen? Es ist es wahrscheinlich nicht wert. Übrigens, danke, dass du mir in den letzten 2 Monaten mit Django geholfen hast. Du bist wie mein privater Mentor hier in SO :-). Kontrollierst du regelmäßig meine Fragen oder etwas lol? – hobbes3