通过 Django 中的四种模型进行查询
Querying through four models in Django
我有一个类似于此(简化)的数据模型:
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
直接,并通过 Transfer
).
到 Mobility
这个问题与this other question的不同之处在于,在我的情况下,我需要经历两个关系,还有一个复合条件。
只需使用 double-underscore notation 进行跨关系的查找。在这种情况下,可以这样做:
transfer_lines = TransferLine.objects.filter(transfer__mobility=mobility,
organism=organism)
另一种方法是使用 ForeignKey
reverse relation:
tlines = my_organisam.transferline_set.filter(transfer__mobility=my_mobility)
我有一个类似于此(简化)的数据模型:
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
直接,并通过 Transfer
).
Mobility
这个问题与this other question的不同之处在于,在我的情况下,我需要经历两个关系,还有一个复合条件。
只需使用 double-underscore notation 进行跨关系的查找。在这种情况下,可以这样做:
transfer_lines = TransferLine.objects.filter(transfer__mobility=mobility,
organism=organism)
另一种方法是使用 ForeignKey
reverse relation:
tlines = my_organisam.transferline_set.filter(transfer__mobility=my_mobility)