在对象列表中查找具有匹配键的对象

时间:2013-12-09 23:53:17

标签: python django

我的代码看起来像这样(.customers引用名为Customer的Django模型列表):

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

这不起作用,因为它正在针对Customer对象列表检查id。我想要一些为Django的all()提供类似优化评估的东西,但如果列表中的一个客户具有匹配的id,则返回true。有没有一种优雅的方法来实现这一目标?

2 个答案:

答案 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()