2012-04-08 22 views
2

Auf meiner Indexseite muss ich wissen, ob der aktuelle Benutzer über ein Buch abgestimmt hat, sodass ich eine Klasse für die <li> Elemente festlegen kann, über die der aktuelle Benutzer bereits abgestimmt hat.Überprüfen, ob der aktuelle Benutzer gewählt hat

Template (Schnipsel)

{% 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 (Schnipsel)

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 (Schnipsel)

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) 

Antwort

1

Zuerst wird Ihr Code nicht richtig dargestellt, da Sie Variablen an die Vorlage übergeben, die in Ihrer Ansicht nicht existieren - ich hoffe, das ist nur ein Tippfehler.

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)) 

Für Ihre Frage - müssen Sie prüfen, ob ein Benutzer userUpVotes oder userDownVotes für das Modell ist, in der Schleife in der Vorlage:

{% 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 %} 
+0

Es war ein Tippfehler :) –

Verwandte Themen