【问题标题】:Django filter model based on max date基于最大日期的 Django 过滤器模型
【发布时间】:2021-11-03 08:42:56
【问题描述】:

我有一个带有以下条目的药物模型:

id  location  num  date         country
1   UC        ABC  2021-03-26   ZAF
2   UC        DEF  2021-03-26   ZAF       # line to retrieve with filter
3   UC        ABC  2021-09-06   ZAF       # line to retrieve with filter

我想根据组合 loc - num - date 的最大日期选择记录

例如,在上面的测试用例中,我只想返回最近的 2 条记录,因为 id 3 比 id 1 更新

【问题讨论】:

  • 您想检索 2 条记录,最大日期?
  • 在上面的示例中,UC / ABC 有 2 行(1 和 3),我想检索最大日期的行(第 3 行)

标签: django orm django-queryset


【解决方案1】:
from django.db.models import Max

result = Drug.objects.values('location','num').annotate(max_date=Max('date')).order_by()

解释:

Drug 表中,group locationnum 的行(因此在您的示例中 row1 和 row3 将被分组在一起),然后使用 Max('date') 获取记录

【讨论】:

  • 上面的例子只是一个'提取'我不能在我的情况下使用切片
  • 请概括您的问题,您最终要检索什么
  • 你的检索逻辑是什么,你可以用简单的英语说出来吗?
  • 你想检索所有记录,但如果 loc-num 冲突然后 maxdate ?
  • 是的,我想过滤 loc-num 上的“重复”并获取最新的
猜你喜欢
  • 2020-08-15
  • 1970-01-01
  • 2014-03-31
  • 1970-01-01
  • 2020-03-13
  • 2020-08-10
  • 2022-10-05
  • 1970-01-01
  • 2013-09-06
相关资源
最近更新 更多