2016-08-23 6 views
0

Jungs im Versuch, Standard-Django-Berechtigungen zu entfernen, werde ich nie in meinem Projekt verwenden, aber ohne Erfolg. Wenn ich eine Migration mache, heißt es, dass die Migration mit Erfolg durchgeführt wird, aber es gibt keinen Effekt, so wie es die Funktion übersprungen hat. Ich bin mir ziemlich sicher, dass Code in Ordnung ist, weil ich es in der Shell getestet habe. Irgendwelche Ideen? Hier Code für die Migration:Entfernen von Django-Standardberechtigungen von Auth-Modellen

from django.db import migrations 


def remove_redundant_permissions(apps, schema_editor): 
    Permission = apps.get_model('auth.Permission') 
    app_labels = ['admin', 'reversion', 'contenttypes', 'sessions', 'sites'] 
    Permission.objects.filter(content_type__app_label__in=app_labels).delete() 


class Migration(migrations.Migration): 

dependencies = [ 
    ('users', '0014_auto_20160808_0738'), 
] 

operations = [ 
    migrations.RunPython(remove_redundant_permissions), 
] 

Antwort

0

Djangos permessions mit post_migrate Signal erzeugt werden. Dies bedeutet, dass selbst wenn Sie sie in der Migration löschen, sie nach Abschluss der Migration erneut generiert werden.

Hier ist der Code von django

# django/contrib/auth/apps.py 
from django.apps import AppConfig 
from django.contrib.auth.checks import check_user_model 
from django.core import checks 
from django.db.models.signals import post_migrate 
from django.utils.translation import ugettext_lazy as _ 

from .management import create_permissions 


class AuthConfig(AppConfig): 
    name = 'django.contrib.auth' 
    verbose_name = _("Authentication and Authorization") 

    def ready(self): 
     post_migrate.connect(create_permissions, 
      dispatch_uid="django.contrib.auth.management.create_permissions") 
     checks.register(check_user_model, checks.Tags.models) 

Wie Sie sehen auth App dieses AppConfig hat, die Berechtigungen mit create_permissions Funktion regeneriert.

Warum möchten Sie Standard-Django-Berechtigungen löschen? Blockieren sie dich daran, etwas zu tun?

+0

nur kosmetische Gründe, danke das beantwortet meine Frage, ich denke, ich werde sie dann sein lassen. –