สมมติว่าเรามีโมเดลใน 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)
?