django - query - самая последняя запись пользователя - PullRequest
2 голосов
/ 08 марта 2010

вот моя модель


class gameUserTrophyInfo(models.Model):
   user    = models.ForeignKey(userInfo)
   trophy  = models.ForeignKey(gameTrophyInfo)
   date    = models.DateTimeField()

Мне нужен запрос, который мне возвращается: для всех пользователей верните самый последний трофей.

Пример:

my db:

дата (день - месяц - год)


| user | trophy | date              |
| 1    |      1 | 10-10-10 10:00:00 |
| 1    |      2 | 10-10-10 09:00:00 |
| 2    |      1 | 10-10-10 01:00:00 |
| 2    |      2 | 11-10-10 01:00:00 |
| 3    |     10 | 20-10-10 01:00:00 |

возвращается:


| user | trophy | date              |
|    1 |      1 | 10-10-10 10:00:00 |
|    2 |      2 | 11-10-10 01:00:00 |
|    3 |     10 | 20-10-10 01:00:00 |

как я могу это сделать?

спасибо!

1 Ответ

2 голосов
/ 08 марта 2010

Вам нужно два запроса:

users = User.objects.annotate(max_trophy_info_id=Max('gameusertrophyinfo__id'))
ids = [user.max_trophy_info_id for user in users]
trophy_infos = gameUserTrophyInfo.objects.filter(id__in = ids)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...