【发布时间】:2014-12-19 05:46:14
【问题描述】:
我有模特:
class Question(models.Model):
user = models.ForeignKey(User)
title = models.CharField(max_length=120)
description = models.TextField()
category = models.ForeignKey('Category')
answers = models.ManyToManyField('Answer',related_name='answer_name', blank=True)
post_date = models.DateTimeField(auto_now=True)
published = models.BooleanField(default=False)
vote = models.IntegerField(default=0) # Field that denotes the no of vote for particular question
def __unicode__(self):
return self.title
我的看法:
def VoteCountView(request, pk):
ques = Question.objects.get(id=pk)
cpk = ques.category.id
valid_user = ques.user.username
if request.user.is_general_user:
if request.user.username == valid_user:
messages.warning(request, "You cannot vote your own question")
return redirect("question-detail", pk, cpk)
else:
vote_limit = Question.objects.values_list("vote", flat=True).filter(pk=pk).filter(user=request.user)#[0][0]
print "vote count"
print vote_limit
if vote_limit < 1:
vote_count = ques
print vote_count.user
count = vote_count.vote
count +=1
vote_count.vote = count
vote_count.user = request.user
print vote_count.user
vote_count.save()
else:
messages.warning(request,"You cannot vote twice")
return redirect("question-detail", pk, cpk)
else:
messages.warning(request,"You are not allowed to vote a question")
return redirect("question-detail", pk, cpk)
我想要的是除了发布问题的用户之外的其他用户可以投票。当其他用户对该问题进行投票时,它会显示列表索引超出范围。我可以从这个模型中实现这一点,还是我必须制作单独的模型进行投票。
另外如果用户没有登录或者不是一般使用,如果投票它说用户对象没有属性is_general_user??
谁能帮我解决这个问题???
【问题讨论】:
-
为什么你得到“列表索引超出范围”:因为你的查询集没有返回结果
-
"如果用户未登录或不常用,如果他们投票表示用户对象没有属性 is_general_user" ...是的,显然