【问题标题】:Django - Get highest value from each userDjango - 从每个用户那里获得最高价值
【发布时间】:2022-01-02 16:04:50
【问题描述】:

我有这个模型:

型号:

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

获取示例:

但我只想为每个用户获得最高等级的 grad 值:

提前谢谢你!

【问题讨论】:

  • 你用的是什么数据库?
  • 我认为你需要使用这个 from django.db.models import Avg, Max, Min, Sum .aggregate(Max('Grad_Òrder')) 这只是你可以使用的一个想法。 ..

标签: python django database


【解决方案1】:

你可以注释你需要的值:

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

【讨论】:

  • 谢谢!这对我有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
相关资源
最近更新 更多