小编add*_*s68的帖子

Django 1.7在哪里放置代码以编程方式添加组?

我一直试图在Django Auth文档中找到答案,但似乎无法找到我要找的东西.

我遇到的问题是,当我定义添加组的代码时(与管理页面中的组相同):

#read_only
group, created = Group.objects.get_or_create(name='read_only')   
if created:
    group.permissions.add(can_read_campaign)
    logger.info('read_only_user Group created')
#standard
group, created = Group.objects.get_or_create(name='standard_user') 
if created:
    group.permissions.add(can_edit_users)
    logger.info('standard_user Group created')
#admin
group, created = Group.objects.get_or_create(name='admin_user') 
if created:
    group.permissions.add(can_edit_campaign, can_edit_users)
    logger.info('admin_user Group created')
Run Code Online (Sandbox Code Playgroud)

当我在models.py和init .py中运行此代码时,他们都给我这个错误:

django.core.exceptions.AppRegistryNotReady
Run Code Online (Sandbox Code Playgroud)

我认为这是由于Model/init试图过早地将内容插入django app/admin?

如何以编程方式添加这些组?

编辑:

这不是一个重复的问题,这实际上是在项目设置期间在模型中添加权限和组,而不是通过shell.

我已经通过使用信号和接收器(django模块)解决了这个问题.

我添加了代码来创建权限/组到它自己的函数中并使用接收器(post_migrate)进行修饰,它将在迁移完成后运行此函数,从而消除此错误.

@receiver(post_migrate)
def init_groups(sender, **kwargs):
    #permission and group code goes here
Run Code Online (Sandbox Code Playgroud)

python django django-models django-admin

16
推荐指数
3
解决办法
4636
查看次数

标签 统计

django ×1

django-admin ×1

django-models ×1

python ×1