【问题标题】:Having trouble updating database with Django使用 Django 更新数据库时遇到问题
【发布时间】:2020-12-10 06:10:55
【问题描述】:

大家好,我的代码有点乱,但也许你可以帮我弄清楚为什么它没有按照我的意愿去做。

我的逻辑有问题,因为我自己尝试了更新语句并且它们确实有效。

我不明白为什么它不会进入 elif 语句。

投票表只是 postID、用户名、upvote 和 downvote。如果用户在表中有该 postID 的记录并且他们的赞成票标记为 1,我希望它能够正常工作,那么您应该只能反对票。

目前,它不允许您投票两次,但如果您已经投票,则根本不允许您投票。

这是我的相关代码。

谢谢!

def upvote(request):
    postID = request.POST.get("postID")
    currentUser = request.POST.get("currentUser")
    username = request.POST.get("username")
    query = NewPost.objects.get(id = postID)
    check = Vote.objects.filter(postID = postID) & Vote.objects.filter(username = currentUser)
    if(len(check) < 1):
        query.rating = query.rating +1
        query.save()
        query2 = User.objects.get(username = username)
        query2.userRanking = query2.userRanking +1
        query2.save()
        new = Vote.objects.create(postID = postID, username = currentUser, downvote = 0, upvote = 1)
        new.save()
        pyautogui.hotkey('f5')
        return render(request)
    elif(len(check) > 1):
        if(check[0].upvote == 0):
            check.update(downvote = 0)
            check.update(upvote = 1)
            check[0].save()
            check.save()
            query.rating = query.rating +1
            query.save()
            query2 = User.objects.get(username = username)
            query2.userRanking = query2.userRanking +1
            query2.save()
            pyautogui.hotkey('f5')
            return render(request)
        else:
            pyautogui.hotkey('f5')
            return render(request)
    else:
        pyautogui.hotkey('f5')
        return render(request)

def downvote(request):
    postID = request.POST.get("postID")
    currentUser = request.POST.get("currentUser")
    username = request.POST.get("username")
    query = NewPost.objects.get(id = postID)
    check = Vote.objects.filter(postID = postID) & Vote.objects.filter(username = currentUser)
    if(len(check) < 1):
        query.rating = query.rating -1
        query.save()
        query2 = User.objects.get(username = username)
        query2.userRanking = query2.userRanking -1
        query2.save()
        new = Vote.objects.create(postID = postID, username = currentUser, downvote = 1, upvote = 0)
        new.save()
        pyautogui.hotkey('f5')
        return render(request)
    elif(len(check) > 1):
        if(check[0].downvote == 0):
            check.update(downvote = 1)
            check.update(upvote = 0)
            check[0].save()
            query.rating = query.rating -1
            query.save()
            query2 = User.objects.get(username = username)
            query2.userRanking = query2.userRanking -1
            query2.save()
            pyautogui.hotkey('f5')
            return render(request)
        else:
            pyautogui.hotkey('f5')
            return render(request)
    else:
        pyautogui.hotkey('f5')
        return render(request)

【问题讨论】:

    标签: python django python-object


    【解决方案1】:

    我将 elif 语句更改为:

    elif(len(check) > 0):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多