Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 预取对象和切片_Django_Django Queryset - Fatal编程技术网

Django 预取对象和切片

Django 预取对象和切片,django,django-queryset,Django,Django Queryset,我正试图在预取对象内部进行切片 def get_queryset(self): qs = super().get_queryset() return qs.prefetch_related( Prefetch('products', queryset=Product.objects.order_by('-updated_at', '-created_at')[:3])) 但我得到了以下错误: Cannot filter a query

我正试图在预取对象内部进行切片

  def get_queryset(self):
        qs = super().get_queryset()
        return qs.prefetch_related(
            Prefetch('products', queryset=Product.objects.order_by('-updated_at', '-created_at')[:3]))
但我得到了以下错误:

Cannot filter a query once a slice has been taken.
我发现了以下关于它的帖子: 但是这个解决方案,在我的情况下不起作用,使用timedelta你不知道你得到了多少

另外,这个问题已经存在3年多了,所以我希望在此期间对Django进行一些解决方案的更改(支持多个数据库的更改)

在跟踪器中,有一个使用窗口的解决方案:

Prefetch(
    'post_set',
    queryset=
        Post.objects
        .annotate(_rank=Window(Rank(), partition_by='category')
        .filter(_rank__lte=3)
)
但是我不知道除了PostgreSQL之外还有什么窗口支持,也不知道什么时候可以找到Rank


我正在考虑使用extra是否有帮助。

我已经浏览了您链接内容的评论。项目中的人似乎意识到了这个问题。建议找到一个解决方法来限制查询。

这目前不受支持-请参阅您链接的问题中现在有一个解决方案:我看到了注释,但不知道该函数在数据库级别的支持程度;我更新了这个问题,使之更清楚。