我在 this answer 中发现我可以使用原始 SQL 轻松删除表中的重复行(基于 N 列的重复)。
是否有使用 Django ORM 的等价物? 我在 Django 中发现的唯一内容涉及仅基于 1 列的重复。
注意:我知道在 Django 中有一种方法可以防止将来重复(基于几个字段),使用 unique_together
字段(但我以前不知道)。
谢谢。
最佳答案
将另一个答案中的 SQL 直接转换为 Django ORM:
from django.db.models import Min
# First select the min ids
min_id_objects = MyModel.objects.values('A', 'B').annotate(minid=Min('id'))
min_ids = [obj['minid'] for obj in min_id_objects]
# Now delete
MyModel.objects.exclude(id__in=min_ids).delete()
这将导致 2 个单独的 SQL 查询,而不是另一个答案中提供的一个嵌套 SQL。但我认为这已经足够了。
关于python - Django:如何删除基于 2 列的重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32690122/