如何一次获得最新的许多团体

时间:2011-03-23 02:15:51

标签: django django-queryset

我有一个这样的模型:

class Foo(models.Model):
    date = models.DateTimeField()
    language = models.TextField()
    # other stuff

我希望按语言对Foo进行分组,然后在每组中获取最新的一个。我无法弄清楚如何使用django的QuerySet API来执行此操作(老实说,我不知道如何在SQL中执行此操作)。例如:

pk | date   |    language
---+--------+------------------
1  | 1:00   |    python
2  | 1:30   |    python/django
3  | 1:45   |    haskell
4  | 2:15   |    python
5  | 2:45   |    haskell

我想得到类似这个结果的东西:

{ 'python': 4, 'python/django': 2, 'haskell': 5 }

也许代替数字,那些是完整的Foo个对象。

2 个答案:

答案 0 :(得分:2)

您可以使用原始查询来解决问题:

$.ajax ({
   type: "POST",
   url: "post.php", 
   data: JSON.stringify({ test: item }),
   contentType: "application/json; charset=utf-8",
   success: function(result) {
      console.log(result);
   }
});

Obs:我使用SQLite语法,但其他SQL语言应该类似。

答案 1 :(得分:0)

试试这个:

Foo.objects.values( '语言')。注释(MAX_DATE =最大( '日期'))。ORDER_BY()

或者您确实需要具有最大日期的记录ID吗?

您可能需要阅读此内容:http://docs.djangoproject.com/en/dev/topics/db/aggregation/