Django - Получение наибольшего значения от каждого пользователя
У меня есть эти модели:
Модели:
class User(models.Model):
name = models.CharField(max_length=255, null=True, blank=True, verbose_name='Name')
class Grad(models.Model):
grad = models.CharField(max_length=255, null=True, blank=True, verbose_name='Grad')
order = models.PositiveIntegerField(max_length=255, null=True, blank=True, verbose_name='Order')
class Number(models.Model):
user = models.ForeignKey(User, null=True, blank=True, verbose_name='User', on_delete=models.CASCADE)
grad = models.ForeignKey(Grad, null=True, blank=True, verbose_name='Grad', on_delete=models.CASCADE)
Вид:
user_numbers = Number.objects.all()
Пример:
Но я хочу получить только значение градации высшего порядка для каждого пользователя:
Заранее спасибо!
Вы можете аннотировать нужные вам значения:
from django.db.models import Max
# ...
# In your view:
data = Number.objects.values('user__name').annotate(
order=Max('grad__order'),
grad='grad__grad',
)
user_numbers = data.all()