Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django上的三表关系_Django_Django Models - Fatal编程技术网

django上的三表关系

django上的三表关系,django,django-models,Django,Django Models,我试图用三种模型做一些非常基本的事情: class Car(models.Model): country = models.ForeignKey(Country) company_name = models.CharField(max_length=50) continent = models.CharField(max_length=50) class CountryProfile(models.Model): country = models.ForeignKey(

我试图用三种模型做一些非常基本的事情:

class Car(models.Model):
   country = models.ForeignKey(Country)
   company_name = models.CharField(max_length=50)
   continent = models.CharField(max_length=50)

class CountryProfile(models.Model):
   country = models.ForeignKey(Country)
   minimum_wage = models.IntField()

class Country(models.Model):
   name = models.CharField(max_length=50)
基本上,Car指向Country,CountryProfile也指向Country。我想知道我怎么能得到所有汽车公司的名称,大陆等于某个东西,最低工资与各自汽车公司的国家相关,而不必做两次db电话


谢谢

在查询
汽车时提取
国家/地区的详细信息非常容易
Car
有一个外键指向
Country
,而
select_related()
就可以了

Car.objects.select_related().filter()
但是(据我所知,如果我错了,请纠正我)Django不允许您使用
select\u related()
调用选择“反向关系”。这意味着您无法从
国家/地区
使用
选择相关的
呼叫接听
国家/地区档案
。这反过来意味着您将触发两个查询


如果您使用的是Django 1.2,并且愿意退回到它,那么您可以使用单个(join)查询获得带有附加信息的
Car
实例。

因此,我想没有比这更有效的方法了。谢谢你的回复!如果您不介意离开Django ORM,有几个选项。1) 如上所述,使用Django ORM和自定义SQL查询的组合。2) 这个更激进。在这种情况下,使用SQLAlchemy处理连接。有关示例,请参见。