Невозможно добавить самую высокую ставку на страницу в 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 %}