如果 get_or_create 不存在则创建查询无效
Create query if not existing with get_or_create not working
我正在构建一个 Q/A 用户可以投票的地方。
我有两个模型,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()
但是当我尝试这个请求时它给了我一个错误:
ValueError at /qa/59/upvote
Cannot assign "59": "VoteUser.topic" must be a "Topic" instance.
您似乎在尝试将 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()
我正在构建一个 Q/A 用户可以投票的地方。
我有两个模型,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()
但是当我尝试这个请求时它给了我一个错误:
ValueError at /qa/59/upvote Cannot assign "59": "VoteUser.topic" must be a "Topic" instance.
您似乎在尝试将 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()