我的代码看起来像这样(.customers引用名为Customer的Django模型列表):
return bundle.request.user.id in bundle.obj.customers.all()
这不起作用,因为它正在针对Customer对象列表检查id。我想要一些为Django的all()提供类似优化评估的东西,但如果列表中的一个客户具有匹配的id,则返回true。有没有一种优雅的方法来实现这一目标?
答案 0 :(得分:2)
return bundle.obj.customers.filter(id=bundle.request.user.id).exists()
请参阅exists
方法上的docs。
答案 1 :(得分:0)
尽可能少的修改:
return bundle.request.user.id in {x.id for x in bundle.obj.customers.all()}
或者如果尚未评估all()
,并且db中存在索引,则查询后会更快
return bundle.obj.customers.filter(id = bundle.request.user.id).exists()