用django获取一个物体的孙子

时间:2016-12-29 14:42:34

标签: python sql django django-models django-orm

我正在使用django使用以下模型构建webapp:

class Business(models.Model):
    ...

class Branch(models.Model):
    business = models.ForeignKey(Business)
    ...

class Event(models.Model):
    branch = models.ForeignKey(Branch)

我的问题是如何通过他们的业务(而不是他们的分支)获取所有事件,以及是否可以在数据库查询中执行此操作。

谢谢!

1 个答案:

答案 0 :(得分:6)

Django querysets允许您使用“__”表示法来访问关系。您可以将其带到任何深度并阅读更多相关信息here

  

Django提供了一种强大而直观的“跟随”关系的方式   在查找中,后面自动为您处理SQL JOIN   场景。要跨越关系,只需使用相关的字段名称   模型中的字段,由双下划线分隔,直到您得到   到你想要的领域。

以下任何一项都适用于您的情况:

Event.objects.filter(branch__business=<business>)
Event.objects.filter(branch__business_id=<business-id>)
Event.objects.filter(branch__business__id=<business-id>)
# if business had a name field you could also use
Event.objects.filter(branch__business__name=name-of-business)