Python 在Django';选择与填充*\集变量相关的\u?

Python 在Django';选择与填充*\集变量相关的\u?,python,django,performance,django-models,django-queryset,Python,Django,Performance,Django Models,Django Queryset,我有一些简单的Django模型,如下所示: class Event(models.Model): # some stuff class Price(models.Model): event = models.ForgeinKey(Event) i、 e.每个事件都有一个或多个价格 我正在选择一些类似这样的事件:Events=Event.objects.filter(…),然后对事件中的事件进行循环:,在循环中,我需要访问每个事件的所有Price对象(即使用Event.Pric

我有一些简单的Django模型,如下所示:

class Event(models.Model):
    # some stuff

class Price(models.Model):
    event = models.ForgeinKey(Event)
i、 e.每个
事件
都有一个或多个
价格

我正在选择一些类似这样的事件:
Events=Event.objects.filter(…)
,然后对事件中的事件进行循环:,在循环中,我需要访问每个事件的所有
Price
对象(即使用
Event.Price\u set
),但这会对每个事件进行新的SQL查询。我有数千个事件,这导致了数千个查询。是否有什么方法可以一次过为每个活动预先填充
价格集

我尝试将一个
select\u related
添加到QuerySet,但它不起作用(我仍然可以在Django调试工具栏中看到所有查询)。当然,有某种方法可以在原始SQL查询上进行连接,它将在一个查询中引入所有的
事件及其
价格

看看:
它只需两次查询(一次查询事件,一次查询价格),即可满足您的需求。

作为对其他有此问题的人的提示:

Django 1.4(在撰写本文时尚未发布)作为对
选择相关
的补充,具有
预取相关
,这正是我在这里要求的。

看看这个答案: