我有一些代碼看起來名單像這樣(.customers指Django模型的列表名爲Customer):找到匹配鍵的對象中的對象
return bundle.request.user.id in bundle.obj.customers.all()
這不起作用,因爲它是在一個Customer對象列表中檢查一個id。我想要爲Django的all()提供類似的優化評估,但如果列表中的某個客戶擁有匹配的id,它將返回true。有沒有一種優雅的方式來實現這一目標?
我有一些代碼看起來名單像這樣(.customers指Django模型的列表名爲Customer):找到匹配鍵的對象中的對象
return bundle.request.user.id in bundle.obj.customers.all()
這不起作用,因爲它是在一個Customer對象列表中檢查一個id。我想要爲Django的all()提供類似的優化評估,但如果列表中的某個客戶擁有匹配的id,它將返回true。有沒有一種優雅的方式來實現這一目標?
return bundle.obj.customers.filter(id=bundle.request.user.id).exists()
見docs上exists
方法。
以儘可能少的修改可能:
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()
什麼是你'Customer'模型看起來像?它是否有'用戶'的外鍵? – jonafato
一位顧客是一位用戶......對於這種混亂感到抱歉 – user1427661