Django 删除基于特定字段的查询中的重复项
我想从基于字段的查询中删除重复项。 我不想只得到值,还要得到对象。 ORM需要根据要删除的行和要保留的行进行选择 让我们用这个例子:Django 删除基于特定字段的查询中的重复项,django,django-models,django-orm,Django,Django Models,Django Orm,我想从基于字段的查询中删除重复项。 我不想只得到值,还要得到对象。 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 - 2
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
基本上,我想根据日期顺序删除重复项,比如(它不起作用):
ORM能处理这个查询吗?还是应该编写函数?我没有找到使用ORM的任何解决方案 解决问题的唯一方法是编写以下函数:
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
然后像这样使用它:
base_query = Table.objects.order_by('-created_at')
pk_to_be_deleted = remove_duplicate_based_on_date(base_query)
base_query.filter(id__in=pk_to_be_deleted).delete()
退房它可能会让你了解你想做什么。谢谢,但我无法用它来解决我的问题。
base_query = Table.objects.order_by('-created_at')
pk_to_be_deleted = remove_duplicate_based_on_date(base_query)
base_query.filter(id__in=pk_to_be_deleted).delete()