【发布时间】:2020-11-29 01:28:22
【问题描述】:
我有两个模型,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)
我正在尝试建立一个链接“我的团队”,它将显示登录参赛者所在团队的所有参赛者。我无法对此进行硬编码,因此需要以某种方式让参赛者团队出现在视图中,以便我可以过滤我的查询集。
我的尝试如下:
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 并使用它来过滤我的查询集。
这一定是一个非常常见的用例,我确信有一个简单的解决方案,但我一直无法弄清楚,并且搜索会带来太多不相关的结果。
我有一个单独的视图来查看 anyteam,它需要一个 url 参数来显示任何团队,但我遇到了同样的问题。我找不到一种方法来获取我自己作为参赛者被分配到的团队的团队 ID,并将其作为模板中的链接传递。
这里的正确方法是什么?
【问题讨论】:
-
@ha-neul 不,我对 django 还是很陌生,边走边学。现在阅读它,谢谢。
标签: django django-views django-queryset