我正在建立一个用户可以投票的问答。
我有两个模型,主题,用于处理投票和问题,以及 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()
但是当我尝试请求时,它给了我一个错误:
/ pa / 59 / upvote中的ValueError 无法分配“ 59”:“ VoteUser.topic”必须是“主题”实例。
答案 0 :(得分:0)
好像您正在尝试将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()