Почему print(bid > highest_bid) возвращает true, когда bid = 3 и highest_bid =2000?

Я делаю простую форму в Django без использования встроенных форм Django. Для обработки формы я просто использую шаблон HTML/Django и Python в файле views.py.

Я не понимаю, почему print(bid > highest_bid) возвращает True, когда:
Наибольшая ставка = 2000.6
ставка = 3

listing_detail.html

<form method="POST" action="{% url 'listing-detail' object.id %}">
    {% csrf_token %}
    <input type="hidden" name="highest_bid" value="{{ highest_bid }}">
    <input type="number" step=".01" min="" placeholder="0.00" name="bid">
    <button type="submit">Place bid</button>
</form>

views.py

# place bid
        highest_bid = request.POST.get("highest_bid", "") #2000.6
        print(f'Highest = {highest_bid}')
        bid = request.POST.get("bid", "") #3
        print(f'bid = {bid}')
        print(bid > highest_bid) # returns True
        if 'bid' in request.POST and bid > highest_bid:
            #bid = float(request.POST['bid'])
            new_bid = Bids(bid_value=bid, bidder=self.request.user, item=item)
            new_bid.save()
        return redirect(reverse("listing-detail", args=listing_id))

Это означает, что ставка сохраняется в базе данных. Даже если я пытаюсь сохранить только самую высокую ставку с помощью строки

if 'bid' in request.POST and bid > highest_bid:

Проблема в том, что вы сравниваете строку, а не число. Чтобы избежать этого, вы должны привести вашу переменную к виду, подобному этому.

print(int(bid) > int(highest_bid)) or print(float(bid) > float(highest_bid))

попробуйте изменить это

if 'bid' in request.POST and bid > highest_bid:

to

if 'bid' in request.POST and float(bid) > float(highest_bid):
Вернуться на верх