Как получить доступ к отправленному значению формы django?

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

views.py

def listing(request, id):
    #gets listing
    listing = Listings.objects.get(id=id)
    #code for forms
    listing_price = listing.bid
    comment_obj = Comments.objects.filter(listing=listing)
    form = CommentForm()
    bid_form = BidsForm()
    if request.method == "POST":
        form = CommentForm(request.POST)
        bid_form = BidsForm(request.POST)
        new_bid = bid_form.cleaned_data.get('newBid')
        if form.is_valid():
            comment = form.save(commit=False)
            comment.listing = listing
            comment.user = request.user
            comment.save()
        if (bid_form.is_valid()) and (new_bid >= listing_price):
            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": form,
               "comments": comment_obj,
               "bidForm": bid_form
               })
    return render(request, "auctions/listing.html",{
        "auction_listing": listing,
        "form": form,
        "comments": comment_obj,
        "bidForm": bid_form
    })

(Есть две формы, одна для комментариев, другая для предложений)

html

<!--bid form-->
    <form action = "{% url 'listing' auction_listing.id %}" method = "POST" name = "newBid">
        {% csrf_token %}
        {{ bidForm }}
        <input type = "submit" value = "Place Bid">
    </form>

Я смог получить доступ к значению цены листинга, добавив эту строку кода: new_bid = bid_form.cleaned_data.get("bid") после if bid_form.is_valid(): и создал новый оператор if для проверки того, что новое_предложение больше, чем цена листинга. Я также удалил if request.method == "POST":, который вызывал ошибку.

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