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