2013-12-09 82 views
0

我有一些代碼看起來名單像這樣(.customers指Django模型的列表名爲Customer):找到匹配鍵的對象中的對象

return bundle.request.user.id in bundle.obj.customers.all() 

這不起作用,因爲它是在一個Customer對象列表中檢查一個id。我想要爲Django的all()提供類似的優化評估,但如果列表中的某個客戶擁有匹配的id,它將返回true。有沒有一種優雅的方式來實現這一目標?

+0

什麼是你'Customer'模型看起來像?它是否有'用戶'的外鍵? – jonafato

+0

一位顧客是一位用戶......對於這種混亂感到抱歉 – user1427661

回答

2

return bundle.obj.customers.filter(id=bundle.request.user.id).exists()

docsexists方法。

0

以儘可能少的修改可能:

return bundle.request.user.id in {x.id for x in bundle.obj.customers.all()} 

,或者如果all()尚未評估,指標存在於數據庫,下面的查詢會更快

return bundle.obj.customers.filter(id = bundle.request.user.id).exists() 
相關問題