有没有办法在django中将组的所有成员设置为超级用户?

时间:2019-10-18 15:34:09

标签: django-admin django-authentication

在Django中,我想将组中的所有成员(管理员)设置为超级用户。有什么方法可以使该组的新成员自动成为超级用户?

1 个答案:

答案 0 :(得分:1)

您也许可以使用信号来执行此操作。您可以了解到将用户添加到组后,如果该用户在管理员组中,则将该用户设置为超级用户。

from django.contrib.auth.models import User, Group
from django.db.models.signals import m2m_changed
from django.dispatch import receiver

@receiver(signal=m2m_changed, sender=User.groups.through)
def manage_administratiors(instance, action, reverse, model, pk_set, using, *args, **kwargs):
    if model == Group and action == 'post_add':
        administrators_pk = Group.objects.get(name='administrators').pk
        if administrators_pk in pk_set:
            instance.is_superuser = True
            instance.save()