How to get a list of all users with a specific permission group in Django

前端 未结 9 807
遇见更好的自我
遇见更好的自我 2020-12-12 16:13

I want to get a list of all Django auth user with a specific permission group, something like this:

user_dict = {
    \'queryset\': User.objects.filter(permi         


        
9条回答
  •  清歌不尽
    2020-12-12 16:53

    Based on @Augusto's answer, I did the following with a model manager and using the authtools library. This is in querysets.py:

    from django.db.models import Q
    from authtools.models import UserManager as AuthUserManager
    
    class UserManager(AuthUserManager):
        def get_users_with_perm(self, perm_name):
            return self.filter(
                    Q(user_permissions__codename=perm_name) |
                    Q(groups__permissions__codename=perm_name)).distinct()
    

    And then in models.py:

    from django.db import models
    from authtools.models import AbstractEmailUser
    from .querysets import UserManager
    
    
    class User(AbstractEmailUser):
       objects = UserManager()
    

提交回复
热议问题