Как я могу отобразить цену каждого товара Django

Я пытаюсь вернуть цену каждого товара, но в зависимости от этих условий.

i. Если ни один пользователь не сделал ставку на товар, возвращается начальная ставка
. ii. Если пользователь сделал ставку на товар, обновить начальную ставку до новой суммы ставки

Я попробовал следующее, но это не отражает новую сумму, когда пользователь делает ставку на товар.

DETAILS.HTML

<div>
    <h5>{{ listing.title }}</h5>
    <hr>
    <p>{{ listing.description }}</p>
    <hr>
    <p>Current price: ${{ listing.bid }}</p>

VIEWS.PY

def make_bid(request, listing_id):
    listing = Auction.objects.get(pk=listing_id)
    bid_item = Bids.objects.filter(auction=listing).order_by('-new_bid').first()
    

#if theres no bid available, use starting bid, if available, update to the latest bid

    if bid_item == None:
        bid = listing.starting_bid
    else:
        bid = bid_item.new_bid

    if request.method == 'POST':
        bid_form = BidForm(request.POST, listing=listing)
        if bid_form.is_valid():
            accepted_bid = bid_form.save(commit=False)
            accepted_bid.user = request.user
            accepted_bid.save()

            messages.success(request, 'Successfully added your bid')
            return redirect('listing_detail', listing_id=listing_id)


        else:
            context = {
                "bid_form": bid_form,
                "bid": bid,
                "bid_item": bid_item,
                "listing": listing
                } 

        return render(request, 'auctions/details.html', context)
             
                
    return render(request, 'auctions/details.html', bid_form = BidForm())  

FORMS.PY

class BidForm(forms.ModelForm):

    class Meta:
        model = Bids
        fields = ['new_bid']
        labels = {
            'new_bid': ('Bid'),
        }

    def __init__(self, *args, **kwargs):
        self.listing = kwargs.pop('listing', None)
        super().__init__(*args, **kwargs)


    def clean_new_bid(self):
        new_bid = self.cleaned_data['new_bid']
        starting_bid = self.listing.starting_bid   

        if new_bid <= starting_bid:
            raise ValidationError("New bid must be greater than the previous bid")
                
        return new_bid

INDEX.HTML

  <h5>{{ listing.title|truncatewords:3 }}</h5>
  <h6>${{ listing.accepted_bid }}</h6>
  <small>{{ listing.description|truncatewords:6 }}</small>
Вернуться на верх