Lọc queryset qua quan hệ nhiều tới nhiều có thể trả về cùng một bản ghi nhiều lần: một cuốn sách khớp hai tác giả thì xuất hiện hai dòng, khiến count() báo sai, phân trang lệch và thống kê sai mà không có lỗi nào cảnh báo. Trong tập này, Linh Fish Dev Podcast #24 giải thích vì sao Django JOIN bảng trung gian sinh ra dòng trùng, và cách sửa gọn nhất là thêm .distinct() vào cuối queryset để cơ sở dữ liệu loại bỏ dòng trùng ngay trong câu lệnh SQL. Nghe xong, bạn sẽ có quy tắc áp dụng ngay cho mọi queryset lọc qua tags, categories hay authors — và biết khi nào distinct() không cứu được, như với DISTINCT ON chỉ có trên PostgreSQL hay khi đã dùng annotate().
Đọc bài đầy đủ: Django: loại bỏ bản ghi trùng bằng distinct() khi lọc qua quan hệ ManyToMany trong 5 phút
English version
🎧 Nghe Linh Fish Dev Podcast trên:
