如何在 Django 视图的模型中引用我自己的记录?
How do I reference my own record in a model in a Django view?
我有两个模型,Contestant 和 Team,它们之间有关系。它们的定义如下:
class Contestant(models.Model):
contestant_email = models.EmailField(max_length = 254)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
assigned_team = models.ForeignKey('Team', on_delete=models.SET_NULL, blank=True, null=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
class Team(models.Model):
team_name = models.CharField(max_length=200)
team_description = models.CharField(max_length=200)
team_leader = models.ForeignKey(Contestant, on_delete=models.SET_NULL, blank=True, null=True)
我正在尝试建立一个link“我的团队”,它将显示已登录参赛者所在团队的所有参赛者。我无法对此进行硬编码,因此需要以某种方式让参赛者团队出现在视图中,以便我可以过滤我的查询集。
我进行了以下尝试:
class myteam(LoginRequiredMixin, SingleTableView):
def get_queryset(self):
qs = Contestant.objects.filter(assigned_team__id=self.request.user__assigned_team__id)
return qs
def get_template_names(self):
return 'xgames/viewteam.html'
def get_table_class(self):
return TeamTable
我意识到我 assigned_team__id=self.request.user__assigned_team__id
的尝试是不正确的,但我也意识到我看不到任何方法来检索调用视图的用户的团队 ID 并使用它来过滤我的查询集。
这一定是一个非常常见的用例,我确信有一个简单的解决方案,但我一直无法弄清楚,而且搜索会带来太多不相关的结果。
我有一个单独的视图来查看任何团队,它需要一个 url 参数来调出任何团队,但我遇到了同样的问题。我无法找到一种方法来为我将作为参赛者分配到的团队获取我自己的团队 ID,并将其作为模板中的 link 传递。
这里正确的方法是什么?
我认为这个查询可以解决问题。
def get_queryset(self):
qs = Contestant.objects.filter(assigned_team=self.request.user.contestant.assigned_team)
return qs
我有两个模型,Contestant 和 Team,它们之间有关系。它们的定义如下:
class Contestant(models.Model):
contestant_email = models.EmailField(max_length = 254)
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
assigned_team = models.ForeignKey('Team', on_delete=models.SET_NULL, blank=True, null=True)
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
class Team(models.Model):
team_name = models.CharField(max_length=200)
team_description = models.CharField(max_length=200)
team_leader = models.ForeignKey(Contestant, on_delete=models.SET_NULL, blank=True, null=True)
我正在尝试建立一个link“我的团队”,它将显示已登录参赛者所在团队的所有参赛者。我无法对此进行硬编码,因此需要以某种方式让参赛者团队出现在视图中,以便我可以过滤我的查询集。
我进行了以下尝试:
class myteam(LoginRequiredMixin, SingleTableView):
def get_queryset(self):
qs = Contestant.objects.filter(assigned_team__id=self.request.user__assigned_team__id)
return qs
def get_template_names(self):
return 'xgames/viewteam.html'
def get_table_class(self):
return TeamTable
我意识到我 assigned_team__id=self.request.user__assigned_team__id
的尝试是不正确的,但我也意识到我看不到任何方法来检索调用视图的用户的团队 ID 并使用它来过滤我的查询集。
这一定是一个非常常见的用例,我确信有一个简单的解决方案,但我一直无法弄清楚,而且搜索会带来太多不相关的结果。
我有一个单独的视图来查看任何团队,它需要一个 url 参数来调出任何团队,但我遇到了同样的问题。我无法找到一种方法来为我将作为参赛者分配到的团队获取我自己的团队 ID,并将其作为模板中的 link 传递。
这里正确的方法是什么?
我认为这个查询可以解决问题。
def get_queryset(self):
qs = Contestant.objects.filter(assigned_team=self.request.user.contestant.assigned_team)
return qs