Django:如何将QuerySet转换为String

时间:2017-04-21 04:21:03

标签: python django django-templates django-views

我使用Python 3并尝试将QuerySet转换为人类可读的文本。我有这样一句话:

top_post = Post.objects.filter(category='1')[:1]

这样打印:

<QuerySet [<Post: Test Post 1>]>

让我刮目的是一个类似的QuerySet在通过模板显示时成功转换:

latest = Post.objects.order_by('-published_date')[:5]

&#34;最新&#34;在模板中使用for ...循环:

{% for latest_posts in latest %}
<h1>{{ latest_posts }}</h1>

而&#34; top_post&#34;只显示空白:

<h1>{{ top_post }}</h1>

任何人都能看到遗失的内容?

4 个答案:

答案 0 :(得分:2)

{{top_post}}是一个查询集(切片查询集也会生成一个查询集),因此它应该显示它。循环遍历查询集时,就像在latest上一样,显示内部的对象。

{{top_post.0}}会为您提供top_post包含的对象。

或者你可以使用

top_post = Post.objects.filter(category='1').first()

直接获取对象。

答案 1 :(得分:1)

您应该在Post模型中实现cb1.setBounds(114, 113, 94, 22); panel_1.add(cb1); cb1.addItem("6:00-8:00 AM"); cb1.addItem("8:00-10:00 AM"); cb1.addItem("10:00-11:00 AM"); 方法,在其中定义要打印的内容。 此外,如果您希望返回一个对象,则应该__str__而不是.get

答案 2 :(得分:0)

将其转换为列表 定义 return(Post.objects.filter(category ='1')。first)

答案 3 :(得分:0)

要解决此问题,您可以使用嵌套循环(其他循环中的一个循环)