我有一个Django应用程序,它有一个名为“Book”的模型,它与“Author”模型有一个外键关系。“作者”模型有一个“名称”字段。我想在模板中显示所有'Book'对象沿着相应的'Author'名称的列表。但是,我希望将查询限制为仅返回在某个日期之后出版的书籍,并且还希望按书籍的出版日期降序排列列表。
以下是我目前为止的代码:
Models.py
class Book(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
publication_date = models.DateField()
class Author(models.Model):
name = models.CharField(max_length=255)
views.py
from django.shortcuts import render
from django.db.models import Q
from .models import Book
def book_list(request):
books = Book.objects.filter(publication_date__gte='2022-01-01').order_by('-publication_date')
return render(request, 'book_list.html', {'books': books})
我如何修改这段代码,使其在模板中包含每个“Book”对象的“Author”名称?
1条答案
按热度按时间fwzugrvs1#
模板
secondary model
(Book)中的author
字段链接到primary model
(Author)。当你得到它时,你将得到作者对象。我通过循环输出模板中的部分模型字段(引号中的只是
字符串
{{ 'publication_date' }}
。在这里,在每一行中,访问该字段,例如,如下所示:{{ i.publication_date }}
。我还让Author模型返回一个字符串名称。
Or
可以参考模板中secondary model
的author field
,通过它获取primary model
的name字段