【发布时间】:2011-02-19 10:51:33
【问题描述】:
我的 Django 代码中有 2 个模型:
class ModelA(models.Model):
name = models.CharField(max_length=255)
description = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
class ModelB(models.Model):
category = models.CharField(max_length=255)
modela_link = models.ForeignKey(ModelA, 'modelb_link')
functions = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
假设 ModelA 有 100 条记录,所有这些记录可能有也可能没有指向 ModelB 的链接
现在说我想获取每个 ModelA 记录的列表以及来自 ModelB 的数据
我愿意:
list_a = ModelA.objects.all()
然后要获取 ModelB 的数据,我必须这样做
for i in list_a:
i.additional_data = i.modelb_link.all()
但是,这会对 i 的每个实例运行一个查询。从而运行 101 个查询。
有没有什么方法可以在 1 个查询中运行所有这些?或者至少少于 101 个查询。
我试过输入ModelA.objects.select_related().all(),但这似乎没有任何效果。
【问题讨论】:
标签: python django django-queryset