Trong trường hợp cụ thể của tôi, tôi có hai loại "thông báo" mà tôi cần phải thử lại và phân trang.Sử dụng django làm cách nào tôi có thể kết hợp hai truy vấn từ các mô hình riêng biệt thành một truy vấn?
Hãy bỏ qua các chi tiết, và chỉ nói rằng các loại đầu tiên là trong một mô hình gọi là Msg1 và người kia được gọi là msg2
Các lĩnh vực của hai mô hình này là hoàn toàn khác nhau, các lĩnh vực duy nhất mà là chung cho các hai mô hình là "ngày" và "tiêu đề" (và tất nhiên, id).
Tôi có thể nhận được Msg1.objects.all()
và Msg2.objects.all()
nhưng tôi có thể kết hợp hai truy vấn này thành một truy vấn, sắp xếp nó theo ngày và phân trang không?
Tôi cần phải duy trì tính chất lười biếng của truy vấn.
Giải pháp tầm thường là list(query)
cả hai truy vấn và kết hợp chúng trong danh sách python. nhưng điều này không hiệu quả vì những lý do hiển nhiên.
Tôi đã xem qua các tham chiếu django về các mô hình và dp-api, nhưng dường như không có cách nào để kết hợp các truy vấn của các mô hình/bảng khác nhau thành một.
"không hiệu quả vì lý do rõ ràng" Thật sao? Bạn có số liệu không? Tôi hỏi vì không có lý do rõ ràng tại sao nó sẽ không hiệu quả. –
Tôi nghĩ vì một khi bạn liệt kê (truy vấn) nó nhận được tất cả các kết quả, và anh ta muốn để điều đó càng muộn càng tốt. –
không hiệu quả vì nó truy cập cơ sở dữ liệu cho TẤT CẢ các mục, (có thể là 1000) trong khi chỉ hiển thị 20 trên mỗi trang hoặc như vậy .. – hasen