我想从基于字段的查询中删除重复项。 我不想只获取值而是获取对象。 ORM需要做出选择,具体取决于将删除哪一行以及将保留哪一行。
让我们使用这个例子:
name - date - value
chris - 1/1/2012 - 12
youssef - 1/02/2015 - 13
trump - 1/8/2017 - 12
chris - 1/12/2018 - 21
trump - 1/03/2019 - 29
输出结果为:
name - date - value
trump - 1/03/2019 - 29
chris - 1/12/2018 - 21
youssef - 1/02/2015 - 13
基本上,我想根据日期顺序删除重复项,例如(它不起作用):
Table.objects.order_by('-date').distinct('name').order_by('-value')
ORM可以处理此查询吗?还是应该写一个函数?
答案 0 :(得分:0)
我没有使用ORM找到任何解决方案。
解决我的问题的唯一方法是编写这个函数:
doc
并像这样使用它:
def remove_duplicate_based_on_date(query):
name_visited = []
pk_to_be_deleted = []
for object in query:
if not(object.name in name_visited):
name_visited += [object.name]
else:
pk_to_be_deleted += [object.id]
return pk_to_be_deleted