2011-09-07 33 views
6

Làm cách nào để tạo query_set thông qua mô hình liên quan?Lọc qua mô hình liên quan django

Ví dụ, làm thế nào tôi có thể làm điều này:

UserProfile.objects.filter(user.is_active=True) # Can't use user.is_active to filter 

câu hỏi tầm thường, câu trả lời tầm thường. Nhưng tôi sẽ giữ nó ở đây vì lợi ích của hậu thế.

+0

tôi vui mừng bạn đã làm! người đọc tài liệu những ngày này, dễ dàng hơn để đến SO! – bharal

Trả lời

8
UserProfile.objects.filter(user__is_active=True) 

Đây cũng là documented trong tài liệu Django.

+1

Vâng, tôi chỉ tìm thấy nó. Cảm ơn. [Spanning Relationships] (https://docs.djangoproject.com/en/dev/topics/db/queries/#lookups-that-span-relationships) –

3

Từ Django documention

Django cung cấp một cách mạnh mẽ và trực quan để "làm theo" mối quan hệ trong tra cứu, chăm sóc của SQL JOIN cho bạn tự động, đằng sau hậu trường. Để mở rộng mối quan hệ, chỉ cần sử dụng tên trường của các trường liên quan trên các mô hình, được phân tách bằng dấu gạch dưới kép cho đến khi bạn đến trường bạn muốn.

Trong ví dụ của bạn này sẽ là:

UserProfile.objects.filter(user__is_active=True) 
2

Cách dễ nhất để làm theo một mối quan hệ là sử dụng một đơn giản "__".

UserProfile.objects.filter (user__is_active = True)

Đây có thể được thay đổi với nhau là tốt (ví dụ dùng_ mẹ _email='[email protected] ')

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