2010-03-15 28 views

Trả lời

50

Trong Django 1.1 trở đi, bạn có thể sử dụng defer('col1', 'col2') để loại bỏ các cột từ truy vấn, hoặc only('col1', 'col2') để chỉ nhận được một tập hợp cụ thể của cột. Xem the documentation.

values thực hiện điều gì đó hơi khác - nó chỉ nhận các cột bạn chỉ định, nhưng nó trả về danh sách từ điển thay vì tập hợp các phiên bản mẫu.

+0

Cảm ơn, cả hai đều có cách sử dụng. – philgo20

+6

@Daniel, bạn có biết tại sao tài liệu nêu rõ các phương pháp này không? Nó nói rằng họ nên là phương sách cuối cùng, và các phương pháp khác nên được hết sức đầu tiên. – Furbeenator

+0

câu hỏi hay ... – rom

17

Nối một .values("column1", "column2", ...) để truy vấn của bạn

+12

Lưu ý: Nếu bạn sử dụng '.get()' thay vì '.filter()' để lấy một đối tượng cụ thể và muốn lấy các cột cụ thể, bạn cần đảm bảo '.values ​​('field1' ,. ..) 'được chỉ định TRƯỚC KHI phương thức' .get() '. Nếu sau đó, nó tạo ra một lỗi vì nó nhận các đối tượng và sau đó cố gắng chạy phương thức '.values ​​()' trên 'instance model' thay vì thuộc tính' objects'. – Furbeenator

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