【问题标题】:how to create Groups programatically in Django如何在 Django 中以编程方式创建组
【发布时间】:2018-11-13 19:12:51
【问题描述】:

我正在使用 django 建立一个成员站点,其中成员属于他们创建的组,然后邀请其他用户加入。

似乎我正在寻找的是使用 django 组功能,但是关于如何去做的文档充其量是最少的——至少我还没有找到。它基本上谈论在管理控制台中创建组,这不是我想要做的。我想以编程方式/动态方式进行。

解决此问题的另一种方法是将用户模型的外键添加到组模型,但是我无法将外键添加到通用用户模型。

我已经阅读了很多谷歌从我的搜索中向我抛出的东西。没有任何帮助。

我该怎么办?

谢谢

【问题讨论】:

    标签: django permissions models


    【解决方案1】:

    Group 只是 Django 中的另一个模型(Django 库中定义的模型之一)。

    因此,您可以创建一个组:

    from django.contrib.auth.models import Group
    
    g1 = Group.objects.create(name='Name of the group')
    

    Group 模型有两种多对多关系:一种与Users(相关名称为users),另一种与Permission(相关名称为permissions)。所以我们可以使用相应的管理器来添加和删除Users和Permissions。

    然后,例如,您可以使用以下用户填充组:

    g1.user_set.add(user1, user2, user5, user7)
    

    您还可以通过以下方式向组添加权限:

    g1.permissions.add(perm1, perm3, perm4)
    

    【讨论】:

    • 我使用的是 django 1.11,如果 User.groups 存在,Group.users 不存在。但我可以按照您的建议使用 g1.user_set.add(user1, user2)
    • @jeanpierrehuart:啊,是的,确实,在 Django-1.11 中(可能还有以前的版本,related_name='user_set':github.com/django/django/blob/stable/1.11.x/django/contrib/auth/…
    • @jeanpierrehuart:我想我在答案中打错了,这是不,谢谢你,已修复:)
    猜你喜欢
    • 2014-09-26
    • 2014-04-30
    • 2014-04-10
    • 2021-06-25
    • 1970-01-01
    • 2015-03-12
    • 2017-12-28
    • 2020-02-18
    • 2017-09-28
    相关资源
    最近更新 更多