Python Django:覆盖用户查询集以从公共中筛选出管理员/职员用户?

Python Django:覆盖用户查询集以从公共中筛选出管理员/职员用户?,python,django,server,django-rest-framework,backend,Python,Django,Server,Django Rest Framework,Backend,我希望过滤user manager self.get_queryset()方法,使客户端应用程序上的用户在搜索或查看其他帐户时不会看到管理员和职员用户。我遇到的问题是,如果完全覆盖get_queryset,我将无法使用身份验证系统登录。我当前的设置是: class AccountManager(BaseUserManager): def get_public_queryset(self): return self.get_queryset().filter(active=

我希望过滤user manager self.get_queryset()方法,使客户端应用程序上的用户在搜索或查看其他帐户时不会看到管理员和职员用户。我遇到的问题是,如果完全覆盖get_queryset,我将无法使用身份验证系统登录。我当前的设置是:

class AccountManager(BaseUserManager):
    def get_public_queryset(self):
        return self.get_queryset().filter(active=True, verified=True, admin=False, staff=False)




如果我在管理器中定义了各种排序方法(因为我可以简单地调用该方法),那么使用这种设计就可以了,但似乎应该有更好的方法来实现这一点。有什么想法吗?

我认为您已经实现的附加方法是一个很好的解决方案,但是如果您坚持使用get\u queryset方法,则可以覆盖该方法并保留基本功能。我会这样做:

...
def get_queryset(self, *a, **kw):
    queryset = super().get_queryset(*a, **kw)
    # filter your queryset here as you wish
    queryset = queryset.filter(active=True, verified=True, admin=False, staff=False)
    return queryset
...
正如我从问题文本中看到的,您试图调用self.get_queryset(),这将是递归调用(不是超级类实现调用),最终将导致最大递归深度超过错误

希望能有帮助