我正在尝试在Prefetch对象中做一个切片
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.
我发现了以下帖子:prefetch_related with limit 但解决方案,在我的情况下不起作用,使用timedelta,你不知道你得到了多少。
此问题还有3年多的时间,所以我希望,在此期间,一些解决方案可以对Django进行更改(支持多个数据库)
在跟踪器中有一个使用Window的解决方案:
Prefetch(
'post_set',
queryset=
Post.objects
.annotate(_rank=Window(Rank(), partition_by='category')
.filter(_rank__lte=3)
)
但我不知道除了PostgreSQL之外的Window支持,也不知道如何找到Rank。
我正在考虑使用额外的帮助。