2010-01-12 30 views
95

Có dòng này trong hướng dẫn Django, Writing your first Django app, part 1:Hướng dẫn Django: choice_set là gì?

p.choice_set.create(choice='Not much', votes=0) 

như thế nào choice_set gọi vào sự tồn tại và nó là gì?

Tôi giả sử phần choice là phiên bản chữ thường của mô hình Choice được sử dụng trong hướng dẫn, nhưng choice_set là gì? Bạn có thể xây dựng?


Cập nhật 1: dựa trên Ben James 'câu trả lời tôi nằm một chỗ trong tài liệu hướng dẫn, nơi nó được mô tả: Following relationships "backward".

+0

Tôi chỉ nên liên kết với tài liệu đó, nó rõ ràng hơn câu trả lời của tôi. –

+0

@ James James: không, tôi đánh giá cao để có nó được xây dựng theo một cách khác, đặc biệt là việc xây dựng những gì ORM đang làm. Các tài liệu Django có thể được terse ở lần. –

+19

Cảm ơn bạn đã hỏi điều này, tôi đã nhầm lẫn bởi điều này vì họ không giải thích nó trong hướng dẫn. – n00b

Trả lời

112

Bạn đã tạo khóa ngoại trên Choice liên kết từng khóa với số Question.

Vì vậy, mỗi Choice rõ ràng có trường question mà bạn đã khai báo trong mô hình.

ORM Django sau mối quan hệ ngược từ Question quá, tự động tạo ra một lĩnh vực trên mỗi trường hợp gọi là foo_set nơi Foo là mô hình với một lĩnh vực ForeignKey để mô hình đó.

choice_setRelatedManager có thể tạo truy vấn của Choice các đối tượng liên quan đến cá thể Question, ví dụ: q.choice_set.all()

Nếu bạn không thích đặt tên foo_set mà Django chọn tự động hoặc nếu bạn có nhiều khóa ngoại trong cùng một kiểu và cần phân biệt chúng, bạn có thể chọn tên ghi đè của riêng mình bằng cách sử dụng đối số related_nameForeignKey.

+0

Cảm ơn. Tôi biết nhiều hơn bây giờ. Option_set không phải là "Người quản lý" phải không? (có thể trả về một thể hiện của lớp QuerySet). Hoặc là nó cùng một điều? –

+1

Bạn chính xác, đó là một 'Trình quản lý liên quan 'có thể tạo các queryset. –

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