代码之家  ›  专栏  ›  技术社区  ›  Mark116

Django在迁移中插入权限

  •  0
  • Mark116  · 技术社区  · 7 年前

    我需要在迁移中填充auth\u group\u权限表。我使用以下代码创建了一个迁移:

    # -*- coding: utf-8 -*-
    # Generated by Django 1.11.5 on 2017-12-05 10:07
    from __future__ import unicode_literals
    from django.db import migrations
    from django.contrib.auth.models import Group, Permission
    from django.contrib.auth.management import create_permissions
    
    def add_group_permissions(apps, schema_editor):
        for app_config in apps.get_app_configs():
            create_permissions(app_config, apps=apps, verbosity=0)
    
        #Workers
        group, created = Group.objects.get_or_create(name='Workers')   
        can_add_worker_task = Permission.objects.get(codename='add_worker_task')
        group.permissions.add(can_add_worker_task)
        group.save()
    
    class Migration(migrations.Migration):
        dependencies = [
            ('crowdsourcing', '0005_add_view_permission'),
            ('auth', '0001_initial'),
        ]
    
        operations = [
            migrations.RunPython(add_group_permissions),
        ]
    

    但当我执行“python manage.py migrate”命令时,我收到了这个错误:“django.contrib.auth.models.DoesNotExist:权限匹配查询不存在”。我认为问题在于“auth\u permission”表仍然是空的。我能解决吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Mark116    7 年前

    我已经用这个代码解决了:

    def add_group_permissions(apps, schema_editor):
        for app_config in apps.get_app_configs():
           app_config.models_module = True
           create_permissions(app_config, apps=apps, verbosity=0)
           app_config.models_module = None