giả sử chúng ta có một mô hình trong django được định nghĩa như sau:
class Literal:
name = models.CharField(...)
...
Trường tên không phải là duy nhất và do đó có thể có các giá trị trùng lặp. Tôi cần hoàn thành nhiệm vụ sau: Chọn tất cả các hàng từ mô hình có ít nhất một giá trị trùng lặp của name
trường.
Tôi biết cách thực hiện bằng cách sử dụng SQL thuần túy (có thể không phải là giải pháp tốt nhất):
select * from literal where name IN (
select name from literal group by name having count((name)) > 1
);
Vì vậy, có thể chọn điều này bằng cách sử dụng django ORM không? Hay giải pháp SQL tốt hơn?
Literal.objects.values('name').annotate(name_count=Count('name')).filter(name_count__gt=1)
?