繁体   English   中英

Django:如何将 QuerySet 转换为字符串

[英]Django: How to Convert QuerySet into String

我正在使用 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]

“最新”在模板中使用 for... 循环:

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

而“top_post”仅显示空白:

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

有人看到缺少什么吗?

{{top_post}}是一个查询集(切片查询集也会产生一个查询集),所以它应该显示它。 当你循环查询集时,就像你在latest做的那样,你显示里面的对象。

{{top_post.0}}会给你top_post包含的对象。

或者你可以使用

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

直接获取对象。

您应该在 Post 模型中实现__str__方法,您可以在其中定义要打印的内容。 此外,如果您希望返回一个对象,则应该使用.get而不是.filter

将其转换为列表

def 
return(Post.objects.filter(category='1').first)

要解决它,您可以使用嵌套循环(其他循环中的循环)

如果您使用过滤器,那么我假设您想要多个值,否则使用 get 方法。 您可以将查询集转换为列表,然后播放列表。

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

现在 top_post 将给出列表中的第一个对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM