我有一个基于类的视图,用于获取查询集并传递给呈现结果的 django-tables2。这方面一切正常。我正在尝试将不同查询集中的记录实例传递给模板,因此我可以在 django-tables2 生成的表上方显示信息。
经过搜索,似乎“正确”的方法是通过get_context_data
方法。但是,当我尝试将此方法添加到我的视图时,只需获取查询集并返回它,就会产生错误Expected table or queryset, not str
。我将此隔离为由于{% render_table table %}
在我的模板中。没有它,我可以按预期访问我的“团队”对象。
为什么会这样?在我添加 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):
context = super().get_context_data()
context["team"] = Team.objects.get(
id=self.request.user.contestant.assigned_team.id
)
return context
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句