python - 如果块在 python 的 django 视图中不起作用
问题描述
def listingpage(request,title):
listings = Auctionlisting.objects.get(title=title)
if request.method == "POST":
form = Bidform(request.POST)
if form.is_valid():
bidmade = request.POST.get('bidmade')
user = request.POST.get('username')
username = User.objects.get(username=user)
bid = Bid(user=username,bidmade=bidmade,bidobject=listings)
if Bid.user != username and Bid.bidobject != listings:
bid.save()
return render(request, "auctions/listingpage.html",{
"listings":listings,
"bidform":form,
"message":"Your bid has been added in the auction..."
})
else:
return render(request,"auctions/error.html")
else:
form = Bidform()
return render(request, "auctions/listingpage.html",{
"listings":listings,
"bidform":form
})
谁能告诉我这段代码有什么问题。如果代码不起作用,即使它的用户名和列表已经存在于投标数据库中,它也会继续添加投标。我正在使用此代码,以防止多次通过单个用户名对对象进行投标。
解决方案
所以你只想Bid
在用户没有为指定列表创建出价的情况下创建一个新的,对吧?
bid, created = Bid.objects.get_or_create(user=username, bidobject=listings,
defaults={"bidmade" : bidmade})
if created:
return render(...)
else:
#oops, that user has already bid on the listing, take appropriate action
推荐阅读
- reactjs - Reactjs - 同一逻辑组件的多个视图的最佳模式
- python - 两个 Python 字典之间的匹配值
- java - Spring boot - 自定义rest控制器异常处理HTTP状态
- android - 使用 androidx dropdownPreference 的正确方法是什么?
- ruby-on-rails - Active Storage:无法创建视频附件的图像预览
- dynamics-crm - 带扩展的 Dynamics CRM 365 Odata 查询性能不佳
- java - Java - 用函数将每个调用包装在一个块中
- c# - 有没有办法不显示 windows 窗体?
- haskell-stack - `stack build`进程退出,代码:ExitFailure 1
- pine-script - 您可以将自定义交易视图松树脚本添加到筛选器吗?