Django 更好地加入
Posted
技术标签:
【中文标题】Django 更好地加入【英文标题】:Django better join 【发布时间】:2020-03-07 18:46:51 【问题描述】:这是我的模型。这就像一个运动队组织应用程序。赛事模型是类似于棒球比赛的体育赛事。任何人都可以属于多个团队。因此,团队成员代表团队的成员。
class Team(models.Model):
name = models.CharField(max_length=100, blank=True)
class TeamMember(models.Model):
member = models.ForeignKey(User, on_delete=models.CASCADE)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
class Event(models.Model):
team = models.ForeignKey(Team, on_delete=models.CASCADE)
我想获取我的团队的活动列表。
def get_queryset(self):
teams = TeamMember.objects.filter(member=self.request.user).values('team')
return Event.objects.filter(team__in=teams)
这确实有效,但我想使其成为一个单一的连接。我的ORM-fu不是那么好。
【问题讨论】:
【参考方案1】:正如Docs 所说
Django 提供了一种强大而直观的方式来“关注”关系 在查找中,自动为您处理 SQL JOIN,在后面 场景。要跨越关系,请使用相关的字段名称 跨模型的字段,用双下划线分隔,直到你得到 到你想要的领域。
...
它也可以反向工作。要引用“反向”关系,请使用 模型的小写名称。
Event.objects.filter(team__teammember__member=self.request.user)
【讨论】:
叮叮叮!谢谢!以上是关于Django 更好地加入的主要内容,如果未能解决你的问题,请参考以下文章
Django AJAX。 dajax 是不是仍然可以或更好地立即迁移到 jQuery(2012 年复兴)?