我想保存每个职位的用户投票,以防止重复投票。这样做的目的是为了保存“喜欢的人”的选票。用户应该只能在结果页上投票,而不能在索引页上投票。因此,我将其添加到结果视图中。你知道吗
目前,如果你上传一个帖子,分数会上升,但问题是它会一直重定向到这个(上传)帖子,不管我在索引页上点击什么帖子。但是,重复投票是不可能的,因为它转到else子句,并且不显示投票三角形。所以防止重复投票是有效的。你知道吗
你知道吗视图.py你知道吗
def result(request, id):
eintrag = get_object_or_404(Eintrag, pk=id)
...
eintraege = Eintrag.objects.all().order_by('-id')
if request.user.is_authenticated():
#here in the next line is the problem:
liked_eintraege = request.user.liked_eintraege.filter(id__in=[eintrag.id for eintrag in eintraege])
else:
liked_eintraege=[]
context = {
'eintrag': eintrag,
'comments': comments,
'comment_form':form,
'liked_eintraege': liked_eintraege
}
return render(request, 'gaestebuch/result.html', context)
@login_required
def vote(request):
eintrag = get_object_or_404(Eintrag, pk=request.POST.get('eintrag'))
eintrag.points += 1
eintrag.save()
user = request.user
user.liked_eintraege.add(eintrag)
user.save()
return HttpResponse()
你知道吗型号.py地址:
class Eintrag(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
title = models.CharField(max_length=200)
points = models.IntegerField(default=1)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
voters = models.ManyToManyField(User, related_name='liked_eintraege')
而且在结果.html地址:
{% if user.is_authenticated and eintrag not in liked_eintraege %}
<a href="/vote/" id="eintrag-vote-{{ eintrag.id }}" class="vote">▲</a>
<p id="eintrag-title-{{ eintrag.id }}">{{ eintrag.title }}</p>
{% else %}
<p>{{ eintrag.title }}</p>
{% endif %}
投票功能可以工作,多亏了我之前的一篇文章。你知道吗
这解决了我的问题!你知道吗
而不是过滤它(过滤器(id)=[电子标签id对于eIntrage中的eintrag()),因为模板已经执行了此操作!无论如何谢谢你。你知道吗
相关问题 更多 >
编程相关推荐