如果我有以下模型:
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/