Как найти 3 верхних или максимальных значения в модели django?

У меня есть класс в django model и как я могу найти 3 максимальных значения в нем? Нужен ли мне цикл for в for? Или мне нужен какой-нибудь класс?

class Prices (models.Model):

user = models.ForeignKey(User,on_delete=models.CASCADE)
Price = models.IntegerField()
page = models.ManyToManyField(Listing_page,blank=True,related_name='Price')
def __str__(self) -> str:
    return f"{self.id} : {self.Price}"

У меня есть код для верхней цены, но мне нужно 3 верхние цены тоже.

big_price = None

for num in post.Price.all():
    if (big_price is None or num.Price > big_price.Price):
        big_price = num

У меня есть класс в модели django и как я могу найти 3 максимальных значения в нем?

С помощью комбинации descending order_by (обратите внимание на - в "-Price") и slicing

post.Price.all().order_by("-Price")[:3]

Вы можете заказать кверисет по цене и затем получить первые 3 из них. Это даст вам то, что вам нужно.Вот ссылка на документацию

Так вы можете сделать:

Prices.objects.order_by("-Price")[:3]

Где order_by упорядочивает набор запросов с заданным значением полей, [:3] ограничивает его до 3 элементов.

Вернуться на верх