【发布时间】:2019-06-07 09:03:52
【问题描述】:
我希望用户只能为类别请求投票一次,但不知何故我收到以下错误,我不知道如何“正确”调用该实例:
不能分配“1”:“CategoryRequests_Voter.voted”必须是 “CategoryRequests”实例。
models.py
# Category Requests Model
class CategoryRequests(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
....
# Vote(s) of Category Requests Model
class CategoryRequests_Voter(models.Model):
voter = models.ForeignKey(User, on_delete=models.CASCADE)
voted = models.ForeignKey(CategoryRequests, on_delete=models.CASCADE)
published_date = models.DateField(auto_now_add=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
views.py
def category_request_up_vote (request, pk):
category_request = get_object_or_404(CategoryRequests, pk=pk)
if request.method == 'GET':
if CategoryRequests_Voter.objects.filter(voter=request.user, voted=category_request.pk).exists():
messages.error(request, 'You already voted for this request.')
else:
category_request.up_vote = F('up_vote') + 1
category_request.save()
CategoryRequests_Voter.objects.create(voter=request.user, voted=category_request.pk)
messages.success(request, 'You have successfully Provided an Up-Vote for this Request')
return redirect('category_request_detail', pk=category_request.pk)
else:
messages.error(request, 'Uuups, something went wrong, please try again.')
return redirect('category_request_detail', pk=category_request.pk)
提前致谢
【问题讨论】:
-
将
voter=request.user, voted=category_request.pk更改为voter=request.user, voted=category_request(这样做不仅对.create(..)有意义,对.exists(..)也是如此。 -
谢谢!工作正常