[英]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.