Невозможно добавить самую высокую ставку на страницу в Django

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

views.py:

def index(request):
    index = listing.objects.filter(end_auction=False)
    number=len(index)
    return render(request, "auctions/index.html", {"list":index, "number":number})

models.py:

class listing(models.Model):
    Title = models.CharField(max_length=50)
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    Description = models.CharField(max_length=300)
    price = models.DecimalField(max_digits=6, null=True, decimal_places=2)
    image=models.ImageField( blank = True,
                          null = True,
                          upload_to ='')
    category = models.ForeignKey(category, on_delete=models.CASCADE, related_name="categories")
    end_auction=models.BooleanField(default=False)
    def __str__(self):
        return f"{self.Title}"

class bid(models.Model):
    listing = models.ForeignKey(listing, on_delete=models.CASCADE)
    user = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
    bid = models.DecimalField(max_digits=6, null=True, decimal_places=2)
    def __str__(self):
        return f"{self.bid}, {self.listing}, {self.user}"

Имейте в виду, что я не включил весь код, который довольно длинный. Если вы хотите, чтобы я что-то добавил, просто дайте мне знать! Буду очень признателен за ответ! :)

Вы можете .annotate(…) [Django-doc] с:

from django.db.models import Max

def index(request):
    index = listing.objects.filter(maxbid=Max('bid__bid')).filter(end_auction=False)
    number=len(index)
    return render(request, "auctions/index.html", {"list":index, "number":number})

Возникающие в результате этого listing объекты QuerySet будут иметь дополнительный атрибут .maxbid, который является самым большим из предложений.

В шаблоне вы можете отобразить это следующим образом:

{% for item in list %}
    {{ item.Title }}: {{ item.maxbid }}
{% endfor %}
Вернуться на верх