Truy vấn này sẽ không cung cấp cho bạn các bản sao - tức là, nó sẽ cung cấp cho bạn tất cả các hàng trong cơ sở dữ liệu, được sắp xếp theo email.
Tuy nhiên, tôi đoán ý của bạn là bạn có dữ liệu trùng lặp trong cơ sở dữ liệu. Thêm distinct()
vào đây sẽ không hữu ích, bởi vì ngay cả khi bạn chỉ có một trường, bạn cũng có trường tự động id
- do đó, kết hợp id + email không phải là duy nhất.
Giả sử bạn chỉ cần một lĩnh vực, email_address
, de-sao chép, bạn có thể làm điều này:
email_list = Email.objects.values_list('email', flat=True).distinct()
Tuy nhiên, bạn thực sự cần giải quyết vấn đề gốc rễ, và loại bỏ các dữ liệu trùng lặp khỏi cơ sở dữ liệu của bạn.
Ví dụ, xóa email trùng lặp bởi trường email:
for email in Email.objects.values_list('email', flat=True).distinct():
Email.objects.filter(pk__in=Email.objects.filter(email=email).values_list('id', flat=True)[1:]).delete()
Hoặc sách theo tên:
for name in Book.objects.values_list('name', flat=True).distinct():
Book.objects.filter(pk__in=Artwork.objects.filter(name=name).values_list('id', flat=True)[3:]).delete()
Nguồn
2011-05-04 06:41:43
Khi giao dịch với nhiều hàng, vui lòng xem: http://stackoverflow.com/questions/13700200/django-remove-duplicate-objects-where-there - nhiều hơn một trường để so sánh/13700642 # 13700642 –