如果不存在get_or_create无法正常运行,则创建查询

问题描述 投票:0回答:1

我正在建立一个用户可以投票的问题。

我有两个模型,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”必须是“主题”实例。

django django-views django-queryset
1个回答
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()
© www.soinside.com 2019 - 2024. All rights reserved.