2017-12-11 1 views
0

나는 프리 페치 객체프리 페치 객체와 슬라이스

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 년 이상 오래된, 그래서 추적기에서 일부 솔루션은, 장고에 변경이 발생한 그 사이에, (다중 데이터베이스를 지원 뭔가)

희망 :

Prefetch(
    'post_set', 
    queryset= 
     Post.objects 
     .annotate(_rank=Window(Rank(), partition_by='category') 
     .filter(_rank__lte=3) 
) 

하지만 PostgreSQL 외에 Window 지원을 알지 못하고 순위를 찾지 못했습니다.

나는 여분의 도움이 필요하면 고려하고 있습니다.

+0

현재 지원되지 않습니다. https://code.djangoproject.com/ticket/26780 – solarissmoke

답변

0

내가 링크 한 것에 대한 의견을 보내 주셨습니다. 프로젝트의 사람들이이 문제를 알고있는 것 같습니다. Look here. This comment은 쿼리를 제한하는 해결 방법을 찾는 것이 좋습니다.

+0

댓글을 보았지만 데이터베이스 수준에서이 기능에 대한 지원을 알지 못합니다. 더 명확하게 질문을 업데이트합니다. – user3541631

관련 문제