[英]query foreign key table for list view in django
我是django的新手。 我有一個django安裝,我正在嘗試在django中為一些數據庫表創建一個UI。
在我的數據庫中有兩個表 - 文章和作者。 Articles表具有Author表的外鍵,字段名稱為author_id。
我設法創建一個列出文章的ListView類。 代碼是這樣的:
from .models import Article
class ArticleListView(ListView):
template_name = "article.html"
context_object_name = 'articles'
paginate_by = 25
def get_queryset(self):
queryset = Article.objects.all().order_by('-created_at')
return queryset
然后在視圖中我循環文章查詢集並打印其字段,這很好。 但是我不知道如何查詢相應的Author表以獲取作者姓名和詳細信息。 誰能幫助我了解如何做到這一點? 我閱讀了很多關於此的文檔/教程,但我無法解決如何做到這一點。 很感謝任何形式的幫助。
請注意:文章模型是由早期的Django程序員編寫的。
如果將帶有name column
的ForeignKey
定義到另一個模型,則Django將構造一個名為column_id
的數據庫列,以獲取相關對象的主鍵。 但是你可以用.column
獲取相關對象(所以不是id
,但相應的對象id
)。
您可以這樣更改模板,例如:
<h1>Articles</h1>
<ul>
{% for article in object_list %}
<li>{{ article.pub_date|date }} - {{ article.headline }}
- {{article.author.name}}</li>
{% empty %}
<li>No articles yet.</li>
{% endfor %}
</ul>
(當然, author
有一個name
字段)。
由於您在此處將獲取所有作者對象,因此在該情況下對查詢集執行prefetch_related(..)
通常更有效:
class ArticleListView(ListView):
template_name = 'article.html'
paginate_by = 25
def get_queryset(self):
return Article.objects..prefetch_related( 'author' ).order_by('-created_at')
因此,您可以在任何Article
實例上調用.author
以獲取.author
的Author
對象( 例如 ,獲取該Author
屬性,修改作者等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.