簡體   English   中英

Django 過濾對象 id 並在用戶 model 中搜索全名

[英]Django filter objects id and search for the full name in User model

我整天都在解決這個問題,但無法正確解決。 請有人幫我...

book_obj = Book.objects.filter(status_sold=True).order_by('-date_sold')

結果將是這樣的:
編號 = 2
標題 = 'bla bla bla bla ...'
author = 3 ---> 來自用戶 model 的 id(不是外鍵)
status_sold = 真
date_sold = '2021-05-10'

我想在模板中查看該數據,但作者我想顯示名稱而不是數字 3 作為作者的 id。 如何解決這個問題?

author_name = User.objects.get(id=?????????? )

所以我可以稍后在模板中使用{{ author_name.get_full_name }}

謝謝先進....

在模板中使用它。 作者用戶 object 已經附在書 object 中,因此您無需再次從數據庫中獲取它。

{{ book_obj.author.get_full_name }}

另一種選擇是將用戶 object 上的__str__方法設置為

def __str__(self):
    return self.get_full_name

然后在模板中你可以做

{{ book_obj.author }}

如果您展示更多模型,提供更具體的答案可能會更容易,但我認為我們已經足夠提供一些幫助。

在您的模板中,您的作者如下:

{{author}}

你可以簡單地用點符號添加你想要的屬性:

{{author.full_name}}

或者您為包含全名的字段輸入的內容。

無需在您的上下文中單獨傳遞用戶 object。 這種方式在循環中也很有效。

文檔鏈接: https://docs.djangoproject.com/en/3.2/topics/templates/#variables

編輯:道歉 - 錯過了沒有外鍵位。

您可能正在查看自定義模板標簽。

from django.template.defaulttags import register

@register.filter
def get_author_name(key):
    author = Author.objects.get(pk=key)
    return author.full_name

然后在模板中使用它: {{ author|get_author_name }}

您可能會對其進行一些改進並添加一個屬性作為 arg。 請參閱: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM