Django中的prefetch_related()ForeignKey反向查找?
我有两种型号:Django中的prefetch_related()ForeignKey反向查找?,django,orm,foreign-keys,foreign-key-relationship,Django,Orm,Foreign Keys,Foreign Key Relationship,我有两种型号: class Company(models.Model): ... class Supplier(models.Model): company = models.ForeignKey(Company, null=True, related_name="suppliers") 如何让所有公司与其相关供应商合作 我试过: Company.objects.prefetch_related('suppliers') Company.objects.prefetch_rel
class Company(models.Model):
...
class Supplier(models.Model):
company = models.ForeignKey(Company, null=True, related_name="suppliers")
如何让所有公司与其相关供应商合作
我试过:
Company.objects.prefetch_related('suppliers')
Company.objects.prefetch_related('supplier_set')
Company.objects.prefetch_related('suppliers').all()
...
我做错了什么
感谢您获取供应商,这样当您执行company.suppliers.all()
操作时,您就不会在company.objects.all()
上再次受到SQL攻击。此后,您可以正常访问供应商:
companies = Company.objects.all().prefetch_related('suppliers')
for company in companies:
# Does not require a new SQL query
suppliers = company.suppliers.all()
获取供应商,这样当您执行company.suppliers.all()
操作时,您就不会在company.objects.all()
上再次受到SQL攻击。此后,您可以正常访问供应商:
companies = Company.objects.all().prefetch_related('suppliers')
for company in companies:
# Does not require a new SQL query
suppliers = company.suppliers.all()
有没有办法包含额外的SQL查询?我需要让供应商的公司使用它的模板后。尝试了
select_related('suppliers')
,但我得到:django.core.exceptions.FieldError:select_related:'suppliers'中给出的字段名无效。选择是:(无)
嗯,这是另一个问题。您正在使用公司
上的选择相关
?在Supplier
模型上是否仍有相关的\u name='suppliers'
?是否有其他SQL查询方法?我需要让供应商的公司使用它的模板后。尝试了select_related('suppliers')
,但我得到:django.core.exceptions.FieldError:select_related:'suppliers'中给出的字段名无效。选择是:(无)
嗯,这是另一个问题。您正在使用公司
上的选择相关
?在供应商
模型上是否仍有相关的\u name='suppliers'
?