我有一个 Author 模型,每个模型都分配了很多书。在我的 Books 模型中,我有:author = models.ForeignKey(Author)
在我的页面中,我列出了我拥有的所有作者,并且在每个作者下我想随机显示 5 本书。
这是否仅通过模板可行,或者我必须在我看来这样做?我的意思是限制结果并随机获取它们。
我目前只将作者传递给模板,如下所示:a = Author.objects.all()
请指教。
你有两个选择:
在你看来:
此查询是“为作者返回 5 本随机书籍a
”
random_books = Book.objects.filter(author=a).order_by('?')[:5]
创建一个接受作者并返回随机 5 本书的自定义标签:
创建自定义标签:
from myapp.models import Book
def randbooks(author):
return {'books': Book.objects.filter(author=author).order_by('?')[:5]}
register.inclusion_tag('book_listing.html')(randbooks)
创建一个模板来显示标题 ( book_listing.html
):
<ul>
{% for book in books %}
<li>{{ book }}</li>
{% endfor %}
</ul>
在您的模板中使用它,如下所示:
{% for author in a %}
{% randbooks author %}
{% endfor %}