django 管理面板带有 LIMIT 的自定义 get_queryset

Saf*_*ari 5 python django django-orm django-admin django-queryset

我想要一个自定义查询来在我的管理 django 面板中显示元素列表。

因此,为了实现这一点,我使用如下代码:

class MyAdmin(admin.ModelAdmin):
....
   def get_queryset(self, request):
        return Post.objects.filter(author_type=AuthorType.USER)
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我还需要为此查询集添加一个 LIMIT:

class MyAdmin(admin.ModelAdmin):
....
   def get_queryset(self, request):
        return Post.objects.filter(author_type=AuthorType.USER)[:500]
Run Code Online (Sandbox Code Playgroud)

但是当我添加限制子句时,[:500]出现此错误:

异常值:获取切片后无法对查询重新排序。

有什么建议么?

don*_*yor 0

显然在你的切片之后某个地方正在发生排序,你应该尝试这个:

def get_queryset(self, request):
    qs = super(MyAdmin, self).queryset(request)
    return qs.filter(author_type=AuthorType.USER)[:500]
Run Code Online (Sandbox Code Playgroud)