インデックスページで、現在のユーザーが本に投票したかどうかを知る必要があるので<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)