Django prefetch_相关获取所有多个对象

Django prefetch_相关获取所有多个对象,django,django-models,Django,Django Models,我正在努力解决这个问题: 我需要获取所有的很多对象,并且正在考虑使用预回迁 这是我的模型示例: class Company(models.Model): companyjobs = models.ManyToManyField(CompanyJob, related_name='jobs') class CompanyJob(models.Model): source = models.CharField(_('Source'), max_length=64, db_index

我正在努力解决这个问题:

我需要获取所有的很多对象,并且正在考虑使用预回迁

这是我的模型示例:

class Company(models.Model):
    companyjobs = models.ManyToManyField(CompanyJob, related_name='jobs')

class CompanyJob(models.Model):
    source = models.CharField(_('Source'), max_length=64, db_index=True)
这就是我所尝试的:

        search_results = Company.objects.prefetch_related('companyjobs')
现在我想访问companyjobs对象。
如何操作?

您可以直接从Company model类的任何实例访问companyjobs,而无需
预取相关的

例如

现在,我们只有一家公司,所有公司的工作都是从那开始的

我们这样做的方式是,django将对数据库进行2次查询

一个是为了公司,一个是为了工作

prefetch\u related
将这些查询“合并”为一个查询 因此,我们在从db获取公司的同时获得所有相关工作

这是非常方便的,因为如果你不使用
预回迁相关的
,你需要处理的公司越多,你就需要进行一次额外的查询以获得该公司的工作,这会显著降低绩效

此处的更多信息:

结果。公司作业。全部()
# .all() will get all elements and [0] will get the first
company = Company.objects.all()[0]  

company.companyjobs
# this is actually a ManyToMany Manager
# you deal with it like any other manager so

for companyjob in company.companyjobs.all():
    # all() will again get all items in company.companyjobs
    # here you iterate over all companyjobs in that company
    ... # do what you must