假设我们在Django中定义了一个模型,如下所示:
class Literal:
name = models.CharField(...)
...
名称字段不是唯一的,因此可能有重复的值。我需要完成以下任务: 从模型中选择所有具有名称字段的至少一个重复值的行。
我知道如何使用普通 SQL 完成它(也许不是最好的解决方案):
select * from literal where name IN (
select name from literal group by name having count((name)) > 1
);
那么,使用Django ORM选择它是可能的吗?还是使用更好的SQL解决方案?
values_list('name',flat=True)
来完成它,而不需要列表推导式。 - dragoonFieldError: Join on field 'id' not permitted. Did you misspell 'count' for the lookup type?
- wRARannotate(mycount=Count('id'))
,然后在mycount
上进行过滤。 - Chris Prattvalues('name')
调用,则可以删除列表推导式并说Literal.objects.filter(name__in=dupes)
,这将允许所有内容在单个查询中执行。 - Piper Merriam