【发布时间】:2021-12-16 17:43:50
【问题描述】:
数据
| name | data1 | data2 | create_date |
|---|---|---|---|
| iron man | ia | ib | 1630000000 |
| hulk | ha | hb | 1630000000 |
| hulk | hc | hd | 1630500000 |
| captain | ca | cb | 1630000000 |
| captain | cc | cd | 1630500000 |
| captain | ce | cf | 1630590000 |
我想获取每个名字的最新数据
| name | data1 | data2 | create_date |
|---|---|---|---|
| iron man | ia | ib | 1630000000 |
| hulk | hc | hd | 1630500000 |
| captain | ce | cf | 1630590000 |
喜欢这个
wish_data = [
{'name':'iron man', 'data1': 'ia', 'data2': 'ib', 'create_date':1630000000},
{'name':'hulk', 'data1': 'hc', 'data2': 'hd', 'create_date':1630500000},
{'name':'captain', 'data1': 'ce', 'data2': 'cf', 'create_date':1630590000},
]
我试过了……
Model.objects.filter(**conditions).values_list('name').annotate(cdate=Max('create_date'))
=> [('iron man', 1630000000), ('hulk', 1630500000), ('captain', 1630590000)]>
但我需要其他栏目...
问
ORM 可以吗? 还是我必须用 for 和 if 语句编写逻辑?
例如
wish_data = []
for name, data1, data2, create_date in Model.objects.filter(**conditions).values_list('name', data1, data2, 'create_date').order_by('-create_date'):
if name not in data:
wish_data.append(
{
wish_data['name'] = name
wish_data['data1'] = data1
wish_data['data2'] = data2
wish_data['create_date'] = create_date
}
)
【问题讨论】:
-
您在这个项目中使用的是哪个数据库?您需要从中获取不同的数据,然后使用名称和最新数据查询对其进行分组。
-
this answer 可能会有所帮助