2010-03-08 38 views
2

最新的条目是我的模型Django的 - 查询 - 在这里用户


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

我想,回到我的查询:为所有用户,返回最近的奖杯。

例子:

我的分贝:

日期(日 - 月 - 年)


| 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 | 

我该怎么办呢?

谢谢!

回答

2

需要两个疑问:

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) 
+0

这样,你就考虑到更大的ID(gameusertrophyinfo__id)等于一个更近的日期,对吧? 那么,这是不正确的我的数据库,将有一种方法来应用最大列'日期'? 对不起,如果我错了解释你的解决方案。 谢谢! – fabriciols 2010-03-08 18:47:14

+0

似乎可以用''gamusertrophyinfo__date''替换正确的结果。 – 2010-03-08 19:10:50

+0

与此,最后一行失败: TypeError:int()参数必须是一个字符串或数字,而不是'datetime.datetime' 任何消化? – fabriciols 2010-03-08 19:21:51