Django - 如果找不到给定查询列表的记录,则返回无对象

时间:2017-03-30 20:11:54

标签: python mysql django django-queryset

我列出了ids [1,2,3,4,5,6,7,8,9,10]

现在我想用上面的id列表查询模型。这就是我执行操作的方式。

ModelA.objects.filter(id__in=ids)

返回与给定id列表匹配的ModelA对象。现在考虑ids [2,3,5]不存在。我是否可以获得与输入列表长度相同的查询集,包括所有未找到的对象。??

例如: -

如果找不到[2,3,5],则应返回

[1,None,None,4,None,6,7,8,9,10]

我怎样才能实现它?

1 个答案:

答案 0 :(得分:3)

你可以做点像......

ids = [1,2,3,4,5,6,7,8,9,10]
results = ModelA.objects.filter(id__in=ids)
result_ids = [result.id for result in results]
return [id if id in result_ids else None for id in ids]