2016-03-29 10 views
0

Ich habe benutzerdefinierte Berechtigungen in meinem Meta:Django benutzerdefinierte Berechtigungen werden nicht erkannt?

class Meta(): #extra bit of info 
    model = User 
    permissions = (
     ("has_uploaded", ("Has uploaded")), 
     ("is_authenticated", ("Is authenticated")), 
    ) 
    fields = ('email','emailConfirm','password1','biography','research_place','studies') 

aber wenn ich

is_auth_perm = Permission.objects.get(codename='is_authenticated') 
request.user.user_permissions.add("is_auth_perm") 

in meinen Ansichten zu tun versuchen, erhalte ich die Fehlermeldung, dass die Genehmigung nicht existiert, auch nach dem i-Migrationen tun und syncdb. mache ich etwas falsch?

+1

Sie verwenden is_auth_perm als String, ist dies ein Tippfehler hier oder in Ihrem Code '.add (" is_auth_perm ")'? – danielcorreia

+0

@danielcorreia danke dafür, das zu bemerken, aber das ist nicht der ganze Fehler, weil der Fehler speziell auf der Linie mit is_auth_perm = etc. steht. – swedishfished

Antwort

1

Haben Sie nach der ersten Initialisierung der Datenbank die Berechtigung zu Ihrem Modell hinzugefügt? Wenn dies der Fall ist, werden die neuen Berechtigungen nicht automatisch zur Datenbank hinzugefügt, selbst wenn Sie migrieren. Um die neuen Berechtigungen hinzuzufügen, können Sie den Befehl update_permissionsmanage.py aus dem Paket django-extensions verwenden.

+0

Hi, ja, das muss mein Fehler sein. Ich habe django-Erweiterungen installiert, zu settings.py installierten Apps hinzugefügt und "python manage.py update_permissions" in der Konsole ausgeführt - es hat den Befehl ausgeführt, aber nichts ausgegeben. Allerdings bekomme ich immer noch "Permission Matching-Abfrage existiert nicht." Error? – swedishfished

+1

Nachdem ich heute Ihre Frage noch einmal angeschaut habe, ist mir aufgefallen, dass Sie die Attribute 'model' und 'field' in Ihrer Meta-Klasse haben. Dies ist für Modell-Meta-Klassen normalerweise nicht der Fall, sondern für Form-Meta-Klassen. Haben Sie Ihre benutzerdefinierten Berechtigungen in einem Ihrer Formulare gespeichert? Wenn ja, verschiebe sie zu deinem Modell und benutze 'update_permissions', um die Berechtigungen zu synchronisieren. – Tim

+0

ja, das war es, vielen Dank – swedishfished

Verwandte Themen