2

インデックスページで、現在のユーザーが本に投票したかどうかを知る必要があるので<li>、現在のユーザーがすでに投票した要素にクラスを設定できます。

テンプレート(スニペット)

{% if top_books %}
<ul>
    {% for book in top_books %}
        <li id="{{ book.id }}" class="book">
                <img class="upvote {% ifequal thisUserUpVote 1 %}selected{% endifequal %}" title="Upvote book (click to undo)" src="{{ STATIC_URL }}images/upvote.png" />
                {{ book.score|floatformat }}
                <img class="downvote {% ifequal thisUserDownVote 1 %}selected{% endifequal %}" title="Downvote book (click to undo)" src="{{ STATIC_URL }}images/downvote.png" />
            <a href="/p/{{ book.id }}/">{{ book.title }}</a>
        </li>
    {% endfor %}
</ul>

Views.py(スニペット)

from django.http import HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from books.models import Book

def index(request):
    latest_book = Book.objects.all().order_by('-pub_date')[:5]
    top_items = Book.objects.all().order_by('-score')[:100]
    return render_to_response('books/index.html', {
                            'latest_books': latest_books,
                            'top_books' : top_books},
                            context_instance=RequestContext(request))

Models.py(スニペット)

class Book(models.Model):
    title = models.CharField(max_length=500)
    pub_date = models.DateField()
    author = models.ManyToManyField(Author)
    userUpVotes = models.ManyToManyField(User, blank=True)
    userDownVotes = models.ManyToManyField(User, blank=True)
4

1 に答える 1

1

まず、ビューに存在しない変数をテンプレートに渡しているため、コードが正しくレンダリングされません。これが単なるタイプミスであることを願っています。

def index(request):
    latest_book = Book.objects.all().order_by('-pub_date')[:5]
    top_items = Book.objects.all().order_by('-score')[:100]
    return render_to_response('books/index.html', {
                            'latest_books': latest_books, # latest_book
                            'top_books' : top_books}, # top_items
                            context_instance=RequestContext(request))

あなたの質問のために-あなたは、テンプレートのループで、ユーザーがモデルであるuserUpVotesかモデルであるかを確認する必要があります:userDownVotes

{% for book in top_books %}
   {% if user in book.userupvotes.all %}
       {{ user }} has upvoted
   {% endif %}
   {% if user in book.userdownvotes.all %}
       {{ user }} has downvoted
   {% endif %}
{% endfor %}
于 2012-04-08T06:42:48.053 に答える