簡體   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