将 get_context_data 方法添加到基于 class 的视图会破坏 django-tables2

Adding get_context_data method to a class based view breaks django-tables2

我有一个基于 class 的视图,我用它来获取查询集并传递给呈现结果的 django-tables2。这方面一切正常。我正在尝试将记录实例从不同的查询集传递到模板,因此我可以在 table django-tables2 生成的上方显示信息。

经搜索,似乎 'right' 方法是通过 get_context_data 方法。但是,当我尝试将此方法添加到我的视图时,只需获取查询集并返回它,它就会产生错误 Expected table or queryset, not str。我将此归因于模板中的 {% render_table table %}。没有它,我可以按预期访问我的 'team' 对象。

为什么会这样?在我添加我的 get_context_data 方法之前,qs 查询集被很好地传递给 django-tables2。 qs 查询集是否也必须通过 get_context_data 返回?如果是,为什么?

这是我的尝试:

class myteam(LoginRequiredMixin, SingleTableView):
    def get_queryset(self):
        qs = Contestant.objects.filter(assigned_team=self.request.user.contestant.assigned_team)
        qs = qs.exclude(id=self.request.user.contestant.id)
        return qs
    
    def get_template_names(self):
        return 'xgames/viewteam.html'

    def get_table_class(self):
        return TeamsTable 
        
    def get_context_data(self):
        team = Team.objects.get(id=self.request.user.contestant.assigned_team.id)
        return {"team": team}

你好像忘了调用 super() 方法

class myteam(LoginRequiredMixin, SingleTableView):
    # Rest of the code

    def get_context_data(self):
        <b>context = super().get_context_data()</b>
        context["team"] = Team.objects.get(
            id=self.request.user.contestant.assigned_team.id
        )
        return context