我正在建立一个用户可以投票的问题。
我有两个模型,Topic处理投票和问题,而VoteUser将用户投票时将布尔值设置为True。
def upvote(request, qa_id):
qa = get_object_or_404(Topic, pk=qa_id)
vote = VoteUser.objects.get_or_create(author=request.user, topic=qa_id)
vote = get_object_or_404(VoteUser, author=request.user, topic=qa_id)
if vote.vote_status == False:
qa.votes += 1
qa.save()
vote.vote_status = True
vote.save()
但是当我尝试请求时,它给了我一个错误:
/ qa / 59 / upvote的ValueError 无法分配“ 59”:“ VoteUser.topic”必须是“主题”实例。
似乎您正在尝试将ID分配给topic
而不是Topic实例。这应该工作:
def upvote(request, qa_id):
qa = get_object_or_404(Topic, pk=qa_id)
vote, _ = VoteUser.objects.get_or_create(author=request.user, topic=qa)
if vote.vote_status == False:
qa.votes += 1
qa.save()
vote.vote_status = True
vote.save()