【问题标题】:Django insert permission in migrationDjango 在迁移中插入权限
【发布时间】:2018-06-22 15:58:14
【问题描述】:

我需要在迁移中填充 auth_group_permission 表。我用这段代码创建了一个迁移:

# -*- 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_permission”表仍然是空的。我能解决吗?

【问题讨论】:

    标签: python django permissions migration database-migration


    【解决方案1】:

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

    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
    

    【讨论】:

      猜你喜欢
      • 2015-05-31
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 2015-03-29
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多