【问题标题】:Display results of query in user admin section - django在用户管理部分显示查询结果 - django
【发布时间】:2021-07-31 11:16:21
【问题描述】:

新手问题:

我在 django 管理员中有我的“用户”应用程序,但是有没有办法实现一个只显示具有标准 is_staff = False 或我定义的任何其他标准的用户的部分? 我有点迷茫,因为我觉得没有必要创建一个应用程序,因为我不需要创建一个新表,只需要查询和显示。

例如:

我的查询应该在 users/admin.py 中实现吗?但是如何呈现查询结果呢?

谢谢!

【问题讨论】:

    标签: django django-models django-users


    【解决方案1】:

    您可以在管理类中定义过滤器。然后 Django 会自动创建一个过滤器侧边栏,您可以在其中过滤用户。

    @admin.register(User)
    class UserAdmin(BaseUserAdmin):
        model = User
        list_filter = ('is_staff', )
    

    更多信息请查看documentation

    【讨论】:

      【解决方案2】:

      您可以使用User 表上的任何请求覆盖UserAdmin 类中的get_queryset 方法。例如,在您的admin.py

      from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
      
      @admin.register(User)
      class UserAdmin(BaseUserAdmin):
          model = User
      
          def get_queryset(self, request):
              qs = super().get_queryset(request)
              return qs.filter(is_staff=False)
      

      你甚至可以根据当前用户的一些属性来请求数据,比如:

      def get_queryset(self, request):
          qs = super().get_queryset(request)
          if not request.user.is_staff:
              return qs.filter(is_staff=False)
          return qs
              
      

      【讨论】:

        猜你喜欢
        • 2017-10-09
        • 2017-05-16
        • 1970-01-01
        • 2020-06-17
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        相关资源
        最近更新 更多