1

それぞれに多くの本が割り当てられた Author モデルがあります。私の Books モデルには次のものがあります。author = models.ForeignKey(Author)

私のページでは、私が持っているすべての著者をリストしており、各著者の下にランダムに 5 冊の本を表示したいと考えています。

これはテンプレートのみで実現可能ですか、それとも私の見解ではそれを行う必要がありますか? 結果を制限し、ランダムに取得することを意味します。

現在、次のように作成者のみをテンプレートに渡しています。a = Author.objects.all()

お知らせ下さい。

4

1 に答える 1

4

次の 2 つのオプションがあります。

  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 に答える