从数据库获取模板上的数据时如何摆脱 <QuerySet[]> 标签?姜戈



通过搜索不同的stackoverflow问题,我很难弄清楚这一点,但我使用基于函数的视图来简化我的一天。但当我从数据库中检索这一单个数据并使用slice只显示一条记录时。它在旁边扔了一个标签,当我们在终端中测试打印时,通常会看到这个标签。但究竟该如何摆脱这种情况呢?

tutorials = Tutorial.objects.values_list('id', flat=True)
courses = Course.objects.all()
tutorial_title = Tutorial.objects.filter(id__in=tutorials).values('title').values_list('title', flat=True)
context = {'tutorial': tutorials,'courses': courses, 'tutorial_title': tutorial_title}

这是我的代码片段,当我调用{{ tutorial_title | slice:'1'}}时。它应该只调用一个最新的记录,该记录完美地工作,但存在<显示的数据旁边的QuerySet标记。

为什么不把它作为一个标志性标题传递给模板:

courses = Course.objects.all()
tutorial_titles =', '.join(Tutorial.objects.values_list('title', flat=True))
context = {
'courses': courses,
'tutorial_titles':tutorial_titles
}

这里的tutorial_titles是一个逗号分隔的教程标题字符串。

或者如果你只想要第一个标题:

courses = Course.objects.all()
tutorial_title = Tutorial.objects.values_list('title', flat=True).first()
context = {
'courses': courses,
'tutorial_title':tutorial_title
}

我想我只是偶然发现了答案。所以我知道QuerySet是一个List,所以在我的views.py中,我认为我可以在Query本身上设置一个for循环,并将其抛出到一个空List,该列表将使用上下文抛出到模板。lmao

tutorials = Tutorial.objects.values('id')
courses = Course.objects.all()
**tutorial_titleList = []**
tutorial_title = Tutorial.objects.filter(id__in=tutorials).values('title').values_list('title', flat=True)
**for tutorial in tutorial_title:
tutorial_titleList.append(tutorial)**
context = {'tutorial': tutorials,'courses': courses, 'tutorial_title': tutorial_titleList}

和在我的模板标签中。由于它仍然返回一个List,所以我只放入|join:"quot;旁边的模板标签

相关内容

最新更新