在Django中(使用django.contrib.auth时)我可以将Group
添加到另一个Group
吗?即一个Group
是另一个Group
的成员吗?
如果是这样,我该怎么做?我使用User
将Group
添加到user_set
,但是根据我收集的内容,默认的Group
模型自身并没有多少。
文档:https://docs.djangoproject.com/en/1.7/topics/auth/default/#groups
答案 0 :(得分:0)
原生Django不提供此机会。
答案 1 :(得分:0)
这可以使用 django-groups-manager
来完成:
以下内容来自文档。它显示了创建一个名为“F.C.国际米兰”,然后添加“员工”和“球员”子组,最后将成员添加到这些组中。
from groups_manager.models import Group, Member
fc_internazionale = Group.objects.create(name='F.C. Internazionale Milan')
staff = Group.objects.create(name='Staff', parent=fc_internazionale)
players = Group.objects.create(name='Players', parent=fc_internazionale)
thohir = Member.objects.create(first_name='Eric', last_name='Thohir')
staff.add_member(thohir)
palacio = Member.objects.create(first_name='Rodrigo', last_name='Palacio')
players.add_member(palacio)
请注意,虽然 django-group-manager
包似乎在积极维护,但该包基于 django-mptt
包,该包在 GitHub 项目上标记为未维护。
如之前的评论中所述,django-mptt
包也可能有助于实现此功能。
文档提供了一个示例,展示了向 parent
身份验证模型添加 Group
属性。
https://django-mptt.readthedocs.io/en/latest/models.html#registration-of-existing-models
import mptt
from mptt.fields import TreeForeignKey
from django.contrib.auth.models import Group
# add a parent foreign key
TreeForeignKey(Group, on_delete=models.CASCADE, blank=True, null=True).contribute_to_class(Group, 'parent')
mptt.register(Group, order_insertion_by=['name'])