Django过滤器根据多个条件在order_by之后返回重复项

时间:2016-08-05 17:57:48

标签: python django

根据我的标准和排序,我很难返回唯一的Clazz个对象。 ClazzSession是两个独立的模型,一个类可以有多个会话。

我介绍了order_by后,我看到了重复的Clazz个对象。如何删除重复项?一个简单的distinct()似乎不起作用。

classes = Clazz.objects.filter(location=loc).distinct().order_by('session__start_date', 'session__end_date')

2 个答案:

答案 0 :(得分:1)

我想你可以这样做:

classes = Clazz.objects.filter(location=loc).annotate(
        startdate=Max('session__start_date'),
        end_date=Max('session__end_date')
    ).order_by('startdate', 'end_date')

答案 1 :(得分:0)

在@ Alasdair的回复之后,最终只是这样做了:

dup_list = []
class_list = []
for c in classes:
    if c not in dup_list:
        dup_list.append(c)
        class_list.append(c)
classes = class_list