Django卡片类型的最新过滤器列表

时间:2019-07-06 09:50:50

标签: django django-models django-filter

我有一些不同卡片类型的Django模型

如何在过滤器中仅获取每种类型的最新信息?

cards.filter(card_type__in = [1,2])

1 个答案:

答案 0 :(得分:0)

您可能需要为此进行分组汇总。代码可以是这样的

card_types_dict = cards.values('card_type').annotate(latest_ctime=Max('ctime'))
"""
[
{'card_type':1, 'latest_ctime': 123049234.124654},
{'card_type':2, 'latest_ctime': 123514104.134085}.
...
]
"""

result = {}
for card_type, latest_ctime in card_types_dict.items():
    result[card_type] = cards.filter(card_type=card_type, ctime=latest_ctime).first()
"""
{'1': <Card Object>, '2': <Card Object>, ... }
"""