假设我们在Django中有一个定义如下的模型:
class Literal:
name = models.CharField(...)
...
名称字段不是唯一的,因此可以具有重复的值。我需要完成以下任务:从模型中选择具有至少一个name
字段重复值的所有行。
我知道如何使用普通的SQL来做到这一点(可能不是最好的解决方案):
select * from literal where name IN (
select name from literal group by name having count((name)) > 1
);
因此,可以使用django ORM选择它吗?还是更好的SQL解决方案?
Literal.objects.values('name').annotate(name_count=Count('name')).filter(name_count__gt=1)
?