Python 如何在Django中通过id搜索queryset,而无需额外的db调用
是否有一种方法可以通过id或字段组合搜索Django queryset,而无需对数据库进行额外调用 像这样的东西是单个数据库查询吗Python 如何在Django中通过id搜索queryset,而无需额外的db调用,python,python-3.x,django,Python,Python 3.x,Django,是否有一种方法可以通过id或字段组合搜索Django queryset,而无需对数据库进行额外调用 像这样的东西是单个数据库查询吗 qs = Employee.objects.filter(restaurant='McDonalds') emp1 = qs.filter(id=1) emp2 = qs.filter(id=2) emp3 = qs.filter(id=3) 或者,这样做的唯一方法是事先将ID映射到模型实例吗 qs = Employee.objects.filter(restau
qs = Employee.objects.filter(restaurant='McDonalds')
emp1 = qs.filter(id=1)
emp2 = qs.filter(id=2)
emp3 = qs.filter(id=3)
或者,这样做的唯一方法是事先将ID映射到模型实例吗
qs = Employee.objects.filter(restaurant='McDonalds')
emp_map = {instance.id: instance for instance in qs}
emp1 = emp_map.get(1)
emp2 = emp_map.get(2)
emp3 = emp_map.get(3)
您可以在一个查询中查询三个元素:
# filter on the primary key as well ↓
qs = Employee.objects.filter(restaurant='McDonalds', pk__in=[1, 2, 3])
data = {q.pk: pk for q in qs}
emp1 = data.get(1)
emp2 = data.get(2)
emp3 = data.get(3)
#同时在主键上过滤↓
qs=Employee.objects.filter(restaurant='McDonalds',pk\u in=[1,2,3])
data={q.pk:qs中q的pk}
emp1=data.get(1)
emp2=data.get(2)
emp3=数据获取(3)
使用
pk\u in=[1,2,3]
的优点是,您可以将数据库检索的记录数限制为最多三个我们感兴趣的记录。这将减少数据库必须做的工作,以及从数据库到Django/Python层的带宽。您可以在一个查询中查询三个元素:
# filter on the primary key as well ↓
qs = Employee.objects.filter(restaurant='McDonalds', pk__in=[1, 2, 3])
data = {q.pk: pk for q in qs}
emp1 = data.get(1)
emp2 = data.get(2)
emp3 = data.get(3)
#同时在主键上过滤↓
qs=Employee.objects.filter(restaurant='McDonalds',pk\u in=[1,2,3])
data={q.pk:qs中q的pk}
emp1=data.get(1)
emp2=data.get(2)
emp3=数据获取(3)
使用pk\u in=[1,2,3]
的优点是,您可以将数据库检索的记录数限制为最多三个我们感兴趣的记录。这将减少数据库必须做的工作,以及从数据库到Django/Python层的带宽