2009-06-22 43 views
14

Tôi có đoạn code sau để đặt tất cả người dùng của tôi từ một lĩnh vực multichoice vào một danh sáchDjango ORM: lọc theo một danh sách các đối tượng

USERS = [] 
for user in User.objects.filter(groups__name='accountexec'): 
    USERS.append((user.id,user)) 

tôi cần phải sử dụng Log.objects.filter() để có được tất cả các bản ghi với một user = để một người dùng trong danh sách người dùng

Trả lời

47

sử dụng __in tra cứu:

Log.objects.filter(user__in=User.objects.filter(groups__name='accountexec')) 
+5

trên thực tế, chỉ cần "Log.objects.filter (user__in = User.objects.filter (groups__name = 'accountexec ')) ". Django sẽ biến nó thành truy vấn đơn + truy vấn phụ. –

+2

Tự do cải thiện truy vấn được đề xuất theo đề xuất của James, hy vọng điều đó là OK. –

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