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()

Пример:

enter image description here

Но я хочу получить только значение градации высшего порядка для каждого пользователя:

enter image description here

Заранее спасибо!

Вы можете аннотировать нужные вам значения:

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()
Вернуться на верх