查询Django中的四个模型

时间:2016-03-08 08:28:28

标签: django django-orm

我有一个与此类似的数据模型(简化):

class Mobility(models.Model):
    pass

class Transfer(models.Model):
    mobility = models.ForeignKey(Mobility)

class Organism(models.Model):
    pass

class TransferLine(models.Model):
    transfer = models.ForeignKey(Transfer)
    organism = models.ForeignKey(Organism)

我有一个Mobility的实例和一个Organism的实例,我希望获得与这两个实例相关的所有TransferLine个实例(Organism 1}}直接,MobilityTransfer)。

这个问题与this other question的不同之处在于,在我的情况下,我需要经历两个关系,而且这也是一个复合条件。

2 个答案:

答案 0 :(得分:1)

只需使用double-underscore notation进行跨越关系的查找即可。在这种情况下,可以这样做:

transfer_lines = TransferLine.objects.filter(transfer__mobility=mobility, 
                                             organism=organism)

答案 1 :(得分:1)

另一种方法是使用ForeignKey reverse relation

tlines = my_organisam.transferline_set.filter(transfer__mobility=my_mobility)