我正在使用django使用以下模型构建webapp:
class Business(models.Model):
...
class Branch(models.Model):
business = models.ForeignKey(Business)
...
class Event(models.Model):
branch = models.ForeignKey(Branch)
我的问题是如何通过他们的业务(而不是他们的分支)获取所有事件,以及是否可以在数据库查询中执行此操作。
谢谢!
答案 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)