这是我的原始查询:
Movie.objects.filter(releaseday__gte=past_month.date(),releaseday__lte=today.date(),movie__movietime__gte=today).extra({'vrank': 'CASE WHEN hotrank=0 THEN 4 WHEN hotrank >=4 THEN 4 ELSE hotrank END'}).distinct().order_by('vrank','-releaseday')
但结果有重复。
我看文件,它说问题是使用order_by()
和distinct()
一起
queryset1
所以现在我需要queryset2
按顺序组合。先显示结果queryset1
,
然后queryset2
请帮帮我,谢谢
视图.py:
class MovieList(MovieMixin, generics.ListAPIView):
serializer_class = MovieSerializer
def get(self, request, *args, **kwargs):
if request.GET.get("top"):
self.top(top)
return super(MovieList, self).get(request, *args, **kwargs)
def top(self,top):
queryset1 = Movie.objects.filter(releaseday__gte=past_month.date(),releaseday__lte=today.date(),movie__movietime__gte=today,hotrank__lte=3).exclude(hotrank=0).distinct().order_by('hotrank')
queryset2 = Movie.objects.filter(releaseday__gte=past_month.date(),releaseday__lte=today.date(),movie__movietime__gte=today).exclude(hotrank__lte=3,hotrank__gte=1).distinct().order_by('-releaseday')
self.queryset =( queryset1 | queryset2 )