为什么django order_by有重复

时间:2015-01-22 05:15:58

标签: python django

我写django restframework

我使用set来确保该号码只出现一次

def hot_movie(self, request, *args, **kwargs):
    print set(list)    #set([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 40, 41, 42, 59, 61, 64, 65, 68, 70, 71, 73, 76, 77])

    self.queryset  = Movie.objects.filter(id__in=set(list)).order_by('hotrank','-releaseday')
    return super(MovieList, self).get(request, *args, **kwargs)

但是在django order_by()之后,有一个副本,
是因为paginator ??
它在页面中显示10个结果 在第2页中,id = 77再次出现 请帮我!!我被困了很多天。

我尝试Movie.objects.filter(id__in=set(list)).order_by('-releaseday')不会重复 但Movie.objects.filter(id__in=set(list)).order_by('hotrank')有重复!为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

如果多部电影具有相同的hotrank,那么ORDER BY hotrank中的实际订单将无法保证。尝试向order_by()子句添加其他字段:

Movie.objects.filter(id__in=set(list)).order_by('hotrank', '-id')