簡體   English   中英

查詢django中列表視圖的外鍵表

[英]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 columnForeignKey定義到另一個模型,則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以獲取.authorAuthor對象( 例如 ,獲取該Author屬性,修改作者等)。

暫無
暫無

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

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