检查当前用户是不是投票
Posted
技术标签:
【中文标题】检查当前用户是不是投票【英文标题】:Check if current user has voted检查当前用户是否投票 【发布时间】:2012-04-08 06:22:55 【问题描述】:在我的索引页面上,我需要知道当前用户是否对一本书进行了投票,因此我可以在当前用户已投票的 <li>
元素上设置一个类。
模板(sn-p)
% 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 (sn-p)
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 (sn-p)
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)
【问题讨论】:
【参考方案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 %
【讨论】:
以上是关于检查当前用户是不是投票的主要内容,如果未能解决你的问题,请参考以下文章