Django:列出所有具有非唯一字段的对象

标签 django django-queryset

如果我有以下模型:

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

如何列出所有具有非唯一 last_name 字段的对象?例如,如果有 20 个对象的姓氏均为“Smith”,则会列出这些对象。但是,如果只有一个对象的姓氏为“Euler”,则它不会包含在列表中。

最佳答案

这是一种有 2 个查询的方法:

non_unique_last_names = (Person.objects
    .values_list('last_name', flat=True)
    .annotate(last_name_count=Count('last_name'))
    .filter(last_name_count__gt=1))

non_unique_person_objects = Person.objects.filter(last_name__in=non_unique_last_names)

关于Django:列出所有具有非唯一字段的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8687087/

相关文章:

Django:评论框架中的反垃圾邮件措施是否足够?或者我需要使用验证码或 akismet?

python - django 表列读取 None 不正确

python - Django:多处理中的查询发生 django.db.utils.OperationalError:SSL 错误?

Python(Django) - 将帖子中的 URL 转换为嵌入的 YouTube IFrame

django - 如何使用带有 WHERE 子句的 Django ORM 连接三个表

django - 比较 django TestCase 中的查询集

python - 如何从 Django 中的查询集中获取所有相关字段?

django - 加入不相关的模型并从查询集中删除重复项

django - 如何获取 Django 模型中具有 ForeignKey 字段特定值的所有对象?

jquery - 为每个评论创建一个单独的边框 Django Css