2016-08-23 7 views
0

私のプロジェクトでは使用されないが成功しないデフォルトのdjangoパーミッションを削除しようとしています。マイグレーションを実行すると、マイグレーションは成功したと表示されますが、機能をスキップしたような効果はありません。私はシェルでテストしたので、コードは大丈夫です。何か案は?ここ は、移行のためのコードです:authモデルからdjangoのデフォルトパーミッションを削除する

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), 
] 

答えて

0

Djangoのpermessionsはpost_migrate信号を生成しています。つまり、移行時に削除しても、移行が完了した後に再生成されます。あなたはauthアプリはcreate_permissions機能と権限を再生成し、このAppConfigを持って見るようにここで

はジャンゴ

# 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) 

からコードです。

なぜデフォルトのdjango権限を削除しますか?彼らはあなたに何かをさせることを妨げますか?

+0

ちょっと美容的な理由から、私の質問に答えてくれてありがとう、私はそれらをさせていただきます。 –

関連する問題