2011-10-27 25 views
5

Có cách nào để kiểm tra bộ truy vấn và nhận thông tin về bộ lọc/loại trừ nào đã được áp dụng không?Django: kiểm tra bộ truy vấn để nhận bộ lọc được áp dụng

tôi cần nó để gỡ lỗi: Tôi không thể hiểu tại sao queryset tôi không bao gồm một số dữ liệu ...

+3

Bạn có thể sử dụng phương thức 'QuerySet.query' để xem SQL trông như thế nào, nếu bạn chưa có. Có lẽ điều đó sẽ giúp ích. –

Trả lời

6

đó dường như không dễ dàng để làm. Mỗi bộ lọc được áp dụng khác nhau cho đối tượng truy vấn, do đó bạn sẽ không tìm thấy một cách rõ ràng đặt ra "filter1", "filter2", "filter3".

Kiểm tra myqueryset.query.__dict__ - bộ lọc đến được phân tách thành các khu vực có liên quan ngay lập tức và không lưu trữ bản ghi. Chi tiết trong django.db.models.sql.query.Query.

Tôi sẽ kiểm tra SQL thay thế.

print myqueryset.query 
2

Nếu bạn đang gỡ lỗi trong một vỏ:

from django.db import connection 
print connection.queries 

Nếu bạn đang làm cho các yêu cầu trong việc sử dụng trình duyệt django debug toolbar, đó là một công cụ tuyệt vời và có thể rất hữu ích:

Django Debug Toolbar

Các vấn đề liên quan