1

我有一个 Author 模型,每个模型都分配了很多书。在我的 Books 模型中,我有:author = models.ForeignKey(Author)

在我的页面中,我列出了我拥有的所有作者,并且在每个作者下我想随机显示 5 本书。

这是否仅通过模板可行,或者我必须在我看来这样做?我的意思是限制结果并随机获取它们。

我目前只将作者传递给模板,如下所示:a = Author.objects.all()

请指教。

4

1 回答 1

4

你有两个选择:

  1. 在你看来:

    此查询是“为作者返回 5 本随机书籍a

    random_books = Book.objects.filter(author=a).order_by('?')[:5]
    
  2. 创建一个接受作者并返回随机 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 %}
    
于 2012-12-25T07:46:41.177 回答