2013-04-26 3 views
10

Ich habe die Berechtigung zu meinem Modell hinzugefügt und ich möchte eine Gruppe in Admin erstellen, die diese Berechtigung verwendet.Django Modell Berechtigungen nicht auf Admin

Das Problem ist, dass die neue Berechtigung nicht in der Liste der Berechtigungen aufgeführt ist.

Gibt es etwas, was ich tun muss, um es dieser Liste hinzuzufügen?

class Meta: 
     permissions = (
      ("add_remove_job", "Can add/remove jobs"), 
     ) 

LÖSUNG: Es ist eine bekannte Einschränkung von Süd ist, ist die Lösung eine syncdb zu tun, jedes Mal syncdb --all

+0

Da Sie Ihre Lösung gefunden haben, sollten Sie die Antwort auswählen, die Ihnen die Lösung gab. – Jeremy

Antwort

2

Was Sie tun müssen, ist eine Genehmigung für ein Modell hinzufügen/ändern.

python manage.py syncdb 
+0

hat nicht funktioniert, ich habe versucht, Syncdb Ich verwende South für DB-Migration, wenn dies etwas bedeutet. – user2323711

12

Versuch:

manage.py syncdb --all 

Andernfalls können Sie django zwingen Berechtigungen für eine bestimmte Anwendung zu generieren:

from django.contrib.auth.management import create_permissions 
from django.apps import apps 

create_permissions(apps.get_app_config('my_app_name')) 

Dadurch werden alle Modelle in der App tun. Sie können anstelle von 'get_models()' eine Liste mit Modellklassenobjekten ersetzen, wenn Sie nur eine Untergruppe möchten.

+0

Leider funktioniert nicht mehr mit Django 1.7. Sie müssen 'von django.apps import apps' und dann' create_permissions (apps.get_app_config ('mein_app_name')) 'aber (ich denke, wenn Sie Migrationen verwenden) wird es nach' wenn nicht router.allow_migrate (mit, Erlaubnis) 'ohne etwas zu tun. – yofee

+0

Wichtig die '--all'-Flagge für Apps mit South! Vielen Dank. – Caumons

+0

Funktioniert in 1.8, danke !! – Chris

-3
python manage.py migrate --fake 
+1

Wie hängt es mit der Frage zusammen? –