[英]django get queryset which is latest of other column value
我有一个带有一些列的 model,它们之间有 2 列:设备 ID(一个 CharField)和 date_saved(一个 DateTimeField)。
我有多行具有相同的设备 ID 但不同的 date_saved (每次用户保存记录时,我保存现在的日期时间)。
我想检索具有特定设备 ID 并且是最新保存的记录列表,即:
| 设备_id | 保存日期 |
| --- ----- | --------------------- -------- |
| 1061a | 2020 年 12 月 26 日 10:10:23|
| 1061a | 2020 年 12 月 26 日 10:11:52|
| 1061a | 2020 年 12 月 26 日 10:22:03|
| 1061a | 2020 年 12 月 26 日 10:31:15|
| 1062a | 2020 年 12 月 21 日 10:11:52|
| 1062a | 2020 年 12 月 25 日 10:22:03|
| 1073a | 2020 年 12 月 20 日 10:31:15|
Output:
| 1061a | 2020 年 12 月 26 日 10:31:15|
| 1062a | 2020 年 12 月 25 日 10:22:03|
| 1073a | 2020 年 12 月 20 日 10:31:15|
我尝试了各种方法但没有成功:
try:
progall=Program.objects.filter(equipment_id__startswith=str(b_id_to_search)).latest('saved_date')
该命令不起作用,程序转到 except 行
如果您使用的是 PostgreSQL ,则可以将 arguments 传递给queryset.distinct()
,以指定要在查询中返回不同值的字段。 您需要在此处正确使用order_by
,您应该按传递给distinct
的字段排序,然后按第二个字段排序,以便您想要的记录位于首位(此处为'-saved_date'
,以便您获得每个equipment_id
ID 的最新信息)
progall = Program.objects.filter(
equipment_id__startswith=str(b_id_to_search)
).order_by=(
'equipment_id',
'-saved_date'
).distinct(
'equipment_id'
)
Program.objects.filter(equipment_id__startswith=b_id_to_search).latest("saved_date")
这应该做。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.