gpt4 book ai didi

django - 如何在 django 迁移期间向用户/组添加权限?

转载 作者:行者123 更新时间:2023-12-04 13:15:58 24 4
gpt4 key购买 nike

我想执行以下迁移:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.contrib.auth.models import Permission
from django.db import migrations
from django.conf import settings
from django.contrib.auth.models import Group, User


def add_api_group(apps, schema_editor):

Group.objects.create(name=settings.API_USER_GROUP)
# get_or_create returns a tuple, not a Group
group = Group.objects.get(name=settings.API_USER_GROUP)
permissions = Permission.objects.filter(codename__in = [
'add_topic',
])
group.permissions.add(*permissions)


def add_api_user(apps, schema_editor):

user = User.objects.create_user(username=settings.API_USER, password=settings.API_USER_PASSWORD)
group = Group.objects.get(name=settings.API_USER_GROUP)
user.groups.add(group)

class Migration(migrations.Migration):

dependencies = [
('nd_content', '0001_initial'),
]

operations = [
migrations.RunPython(add_api_group),
migrations.RunPython(add_api_user)
]

在迁移的最后一行,我发出错误停止执行并查看数据库状态。问题是表 auth_permission仍然没有另一个模块的模型的权限,尽管这个另一个模块被注册为这个迁移的依赖。

我可以确认似乎只有在执行所有迁移后才添加缺少的权限。

最佳答案

AttributeError: 'StateApps' object has no attribute 'label' in Django 1.10

有一个解决方案:
for app_config in apps.get_app_configs():
app_config.models_module = True
create_permissions(app_config, verbosity=0)
app_config.models_module = None

关于django - 如何在 django 迁移期间向用户/组添加权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com