if块在python的django视图中不工作
谁能告诉我这个代码有什么问题吗。如果代码不起作用,它会继续添加出价,即使它的用户名和清单已经存在于出价数据库中。我使用这段代码是为了防止一个用户名多次对一个对象进行出价。因此,如果用户没有为指定的列表创建出价,您只想创建一个新的if块在python的django视图中不工作,python,if-statement,django-models,django-forms,django-views,Python,If Statement,Django Models,Django Forms,Django Views,谁能告诉我这个代码有什么问题吗。如果代码不起作用,它会继续添加出价,即使它的用户名和清单已经存在于出价数据库中。我使用这段代码是为了防止一个用户名多次对一个对象进行出价。因此,如果用户没有为指定的列表创建出价,您只想创建一个新的出价,对吗 def listingpage(request,title): listings = Auctionlisting.objects.get(title=title) if request.method == "POST"
出价,对吗
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.user
是该模型的字段定义;无论用户输入什么名称,它都不可能等于用户名
,因为它不表示类的任何特定实例。这同样适用于Bid.bidobject
。您需要对Bid
执行查询,以查看是否存在具有这两个字段值的现有记录。您正在将值与字段进行比较。我想您可能有兴趣使用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