【问题标题】:django queryset - classify and filter by valuedjango queryset - 按值分类和过滤
【发布时间】:2017-10-12 05:33:42
【问题描述】:

我有两个属性的模型:

class Fruit(models.Model)
   name = models.CharField(max_length=30)
   days_left_to_consumption = models.IntegerField()

这给了我数据库对象:

{"name":"apple", "days_left_to_consumption": 2},
{"name":"apple", "days_left_to_consumption": 3},
{"name":"pineaple", "days_left_to_consumption": 2},
{"name":"pineaple", "days_left_to_consumption": 1}

我想创建查询集以按“名称”属性对结果进行分类(每个不同的水果名称只出现一次),但要为每个具有较高“days_left_to_consumption”值的水果对象获取。我想从上面的例子中得到的结果是:

{"name":"apple", "days_left_to_consumption": 3},
{"name":"pineaple", "days_left_to_consumption": 2}

你有什么想法吗?

【问题讨论】:

  • 至少,您可以使用 Fruit.objects.filter(name=FRUIT_NAME).order_by("-days_left_to_consumption").first() 分别找到每个名称的最高值,然后将它们组合起来事实

标签: python django python-3.x django-models django-queryset


【解决方案1】:

您需要按名称对项目进行分组并获得最大 days_left_to_consumption 像这样:

from django.db.models import Max
fruits = Fruit.objects.values('name').annotate(max_days_left_to_consumption=Max('days_left_to_consumption'))

【讨论】:

  • 是的,已经很接近了,但是当我想要获取对象时,不只是 json 的参数怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 2020-01-01
  • 2018-01-05
  • 2013-09-08
  • 1970-01-01
  • 2018-06-24
  • 1970-01-01
相关资源
最近更新 更多