Django - Получить пользователя с самой высокой ставкой
Мне нужно получить пользователя, который сделал самую высокую ставку за объявление на сайте аукциона.
models.py:
class Listing(models.Model):
class Category(models.TextChoices):
BOOKS = 'Books'
SPORTS = 'Sports'
DEATHLY_HALLOWS = 'Deathly Hallows'
CLOTHING = 'Clothing'
WANDS = 'Wands'
JEWELRY = 'Jewelry'
title = models.CharField(max_length=64)
description = models.TextField(max_length=320)
starting_bid = models.DecimalField(max_digits=10, decimal_places=2, default=0)
current_price = models.DecimalField(max_digits=10, decimal_places=2, default=0 )
img_url = models.URLField(blank=True)
category = models.CharField(choices=Category.choices, max_length=64, blank=True)
is_closed = models.BooleanField(default=False)
user = models.ForeignKey(User, on_delete=models.CASCADE, default=1)
winner = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name="Winner")
def __str__(self):
return f"{self.title}"
class Bid(models.Model):
listing = models.ForeignKey(Listing, on_delete=models.CASCADE, default=1)
bid = models.DecimalField(max_digits=10, decimal_places=2)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, related_name="Bidder")
views.py:
def listing(request, listing_id):
highest_bid = Bid.objects.aggregate(Max('bid'))
winner = highest_bid.user
print(winner)
Возвращает ошибку: 'dict' object has no attribute 'user'
.
Как я могу получить пользователя от максимальной ставки, сделанной на объявление?
Упорядочить Bid
по bid
:
def listing(request, listing_id):
highest_bid = Bid.objects.latest('bid')
winner = highest_bid.user
print(winner)
# …