我们希望一次检索所有表记录,以实现如何在Django orm中实现类似SQL查询的功能。
示例SQL查询:
select *
from Company_info
inner join Bank_info on Bank_info.manufacturer = Company_info.manufacturer
inner join Company_info on Company_info.manufacturer = Company_info.manufacturer
inner join Transport_info on Transport_info.manufacturer = Company_info.manufacturer
码:
class Manufacturer(models.Model):
name = models.CharField(max_length=42)
class Bank_info(models.Model):
account = models.CharField(max_length=42)
manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)
class Company_info(models.Model):
name= models.CharField(max_length=42)
manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)
class Transport_info(models.Model):
name= models.CharField(max_length=42)
manufacturer = models.ForeignKey(Manufacturer, on_delete= models.CASCADE)
您可以为此使用prefetch_related,如注释中所述:
Manufacturer.objects.all().prefetch_related('related_name2', 'related_name3', 'related_name4')
实际上,这不会执行SQL INNER JOIN,但会在Python级别上连接预取的对象-使用相关对象字段时,这将减少对数据库的命中率。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句