【发布时间】:2019-02-13 18:00:46
【问题描述】:
我正在创建一个 Django 应用程序。这是一个文章应用程序。我有一个名为hidden 的字段,当hidden 为真并且用户不在管理面板中时,我想返回一个没有文章的查询集。 p>
管理页面 -> 显示所有内容
普通搜索 -> 仅在 hidden = False 时显示
我的“普通搜索”是我进行的自定义搜索。我正在使用 django-filter 过滤结果,我想自动过滤掉隐藏的文章。
我正在使用自定义管理器创建它:
class ArticleManager(models.Manager):
def get_queryset(self, request):
if request.user.is_superuser:
return super().get_queryset()
return super().get_queryset().filter(hidden=False)
但我只是收到此错误:
TypeError: get_queryset() missing 1 required positional argument: 'request'
【问题讨论】:
-
错误信息说您需要将
request传递给get_queryset。查看文档:docs.djangoproject.com/en/2.1/ref/contrib/admin/… -
我该如何通过呢?我在管理页面上如何传递请求?
-
那个错误告诉你你的
get_queryset()方法没有被request参数调用。您不能在Manager中执行此操作。您应该在您的ModelAdmin中执行此操作。它甚至是您所需要的 documented。