Django фильтр список типов карт только последние - PullRequest
0 голосов
/ 06 июля 2019

У меня есть модель Django нескольких типов карт

Как получить в фильтре только последние версии каждого типа?

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

1 Ответ

0 голосов
/ 06 июля 2019

Для этого вам может потребоваться группировка по группам.Код может быть что-то вроде этого

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>, ... }
"""
...