Как найти 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 элементов.