使用django有效地检索所有相关对象(反向外键)

时间:2016-08-21 15:17:26

标签: mysql django django-queryset

我有以下型号:

Car:
    name = models.CharField(max_length=50)
    model = models.CharField(max_length=80)

Driver:
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)
    car = models.ForeignKey(Car, on_delete=models.CASCADE, related_name='drivers')

现在我想要检索所有汽车,包括相关的模型驱动程序数据

cars = Car.objects.prefetch_related('drivers').all()

现在在我的模板中我只想打印每辆车和第一个驱动程序信息

{% for car in cars %}
  <tr>
    <td>car.name</td>
    <td>car.model</td>
    <td>car.drivers.first.name</td>
    <td>car.drivers.first.address</td>
  </tr>
{% endfor %}

然而,这导致我的数据库中大约500张卡的2k +查询,并且需要一段时间才能加载。我做错了什么,无论如何都要提高效率吗?

0 个答案:

没有答案