class Address(models.Model):
...
class Ship(models.Model):
address = models.ForeignKey(Address, related_name='builtship')
class Photos(models.Model):
ship = models.ForeignKey(Ship, related_name="photoship"
虽然我可以很容易地加入船舶与地址模型,因为它有其相关的名称内船舶,我不能加入它与照片,因为它没有它。
所以,加入地址我做了:q1= ship.objects.select_related('address')
但我试了一整个星期天,我不能写它的ORM风格。我在2分钟内用原始SQL写了它,但我想知道如何在一个查询中将船舶与照片联系起来,以便我可以获取所有值并将其列在表中。
当然,我不能把照片的外键放在船上,因为每艘船都有很多可能的照片,所以它必须从照片到船。
我已经写了我试过的
1条答案
按热度按时间o2g1uqev1#
只能沿着外键连接表,而不能反向连接表。原因是Django连接要求主模型中的每个对象与连接模型中的一个对象关联。
示例:
您可以加入“带照片的船舶”,因为每张照片都只与一艘船舶相关。但不是相反,因为每艘船都可能与许多照片相关。
因此,您可以重新构造查询以从照片开始:
或者你可以使用
prefetch_related()
在一个查询中获取所有相关的对象:请参考Django文档了解预取的工作原理。有很多选择和一些警告。