You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中显示过滤排序后带Author字段的Book列表?

Django显示符合条件书籍及对应作者姓名的实现方案

1. 优化视图查询(推荐,避免N+1查询问题)

在views.py中,给查询集添加select_related('author'),预加载关联的Author数据,减少数据库查询次数:

from django.shortcuts import render
from .models import Book

def book_list(request):
    books = Book.objects.filter(publication_date__gte='2022-01-01')\
                       .select_related('author')\
                       .order_by('-publication_date')
    return render(request, 'book_list.html', {'books': books})

2. 编写模板显示数据

在book_list.html模板中,直接通过外键关联访问作者姓名:

<!DOCTYPE html>
<html>
<head>
    <title>书籍列表</title>
</head>
<body>
    <h1>2022年及以后出版的书籍</h1>
    <ul>
        {% for book in books %}
            <li>
                <strong>{{ book.title }}</strong> - 作者:{{ book.author.name }} - 出版日期:{{ book.publication_date }}
            </li>
        {% empty %}
            <li>暂无符合条件的书籍</li>
        {% endfor %}
    </ul>
</body>
</html>

说明

  • 由于Book的author字段是指向Author的外键,模板中可以直接通过book.author.name获取对应作者的姓名。
  • select_related('author')是性能优化手段,会一次性查询出书籍及关联的作者数据,避免遍历书籍时反复查询作者表的问题;如果数据量较小,不添加该方法也能正常运行,但数据量大时建议加上。

内容的提问来源于stack exchange,提问作者Rahul Krishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 02:43:28