python - 使用 Django 更新数据库时遇到问题
问题描述
嘿伙计们,我的代码有点混乱,但也许你可以帮我弄清楚为什么它没有做我想做的事情。
我的逻辑有问题,因为我自己尝试了更新语句并且它们确实有效。
我不知道为什么它不会进入 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)
解决方案
我将 elif 语句更改为:
elif(len(检查)> 0):
推荐阅读
- php - 币安期货 API 给出错误的季度价格
- pytorch - 如何使用 MNIST 数据集在 pytorch 中进行手动批处理
- java - 在 ServerResponse 中将 mono 作为标头值传递
- c# - Xamarin.Forms 在 CollectionView 中实现延迟加载
- html - 如何使 Bootstrap 响应式表更宽
- javascript - 如何在 React 整页包装器中传递一个道具
- kotlin - 在 Kotlin 中使用列表或数组的范围
- javascript - 通过“闪烁”到自动获得最终值的动画元素高度
- html - Chrome 不会在 html 中自动播放我想要的音乐
- database - Data Vault 2.0 - 什么是多活动卫星?