Как заставить форму 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

Вы считаете количество цифр, а не предоставляете наибольшее число, которое оно должно исключить. Я думаю, что вы превысили границы того, что может обработать база данных. Вам необходимо перестроить модель.

Вернуться на верх