Как заставить форму Django сохраняться каждый раз (а не только при первом отправлении)?
Я пытаюсь сделать сайт электронной коммерции (CS50 Project 2), который позволяет своим пользователям сохранять ставки на различные объявления через форму Django. Предложение должно сохраняться только если оно равно или больше цены листинга или больше всех остальных предложений. Ранее код работал, но теперь форма сохраняется только при первой отправке. Как сделать так, чтобы она сохранялась каждый раз, если соответствует требованиям?
views.py
def listing(request, id):
#gets listing
listing = get_object_or_404(Listings.objects, pk=id)
listing_price = listing.bid
sellar = listing.user
bid_form = BidsForm()
#code for the bid form
bid_obj = Bids.objects.filter(listing=listing)
other_bids = bid_obj.all()
max_bid =0
for bid in other_bids:
if listing.bid > max_bid:
max_bid = listing.bid
if request.method == "POST":
bid_form = BidsForm(request.POST)
if bid_form.is_valid():
new_bid = bid_form.cleaned_data.get("bid")
if (new_bid >= listing_price) and (new_bid > max_bid):
bid = bid_form.save(commit=False)
bid.listing = listing
bid.user = request.user
bid.save()
else:
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"form": comment_form,
"comments": comment_obj,
"bidForm": bid_form,
"bids": bid_obj,
"message": "Your bid needs to be equal or greater than the listing price and greater than any other bids."
})
else:
return redirect('listing', id=id)
return render(request, "auctions/listing.html",{
"auction_listing": listing,
"bidForm": bid_form,
"bids": bid_obj
})
(В этом представлении есть другая форма, но она работает нормально, и я не думаю, что она вызывает проблему с этой формой)
Попробуйте вместо max_digits=1000000000000
max_digits=12
Вы считаете количество цифр, а не предоставляете наибольшее число, которое оно должно исключить. Я думаю, что вы превысили границы того, что может обработать база данных. Вам необходимо перестроить модель.