Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Django ORM-获取组的最新记录_Sql_Django_Orm_Group By - Fatal编程技术网

Sql Django ORM-获取组的最新记录

Sql Django ORM-获取组的最新记录,sql,django,orm,group-by,Sql,Django,Orm,Group By,假设我们有Django ORM模型Meetup,其定义如下: class Meetup(models.Model): language = models.CharField() date = models.DateField(auto_now=True) 我想获取每种语言的最新会议记录 您似乎可以使用以下方法简化查找: Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date

假设我们有Django ORM模型
Meetup
,其定义如下:

class Meetup(models.Model):
    language = models.CharField()
    date = models.DateField(auto_now=True)
我想获取每种语言的最新会议记录

您似乎可以使用以下方法简化查找:

Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date")
在我看来,这应该是每种语言的“最新”聚会。但事实并非如此:

>>> Meetup.objects.create(language='python')
<Meetup: Meetup object>
>>> Meetup.objects.create(language='python')
<Meetup: Meetup object>
>>> Meetup.objects.create(language='node')
<Meetup: Meetup object>
>>> Meetup.objects.create(language='node')
<Meetup: Meetup object>
>>> Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date").count()
4
>Meetup.objects.create(language='python')
>>>Meetup.objects.create(language='python')
>>>Meetup.objects.create(language='node')
>>>Meetup.objects.create(language='node')
>>>Meetup.objects.annotate(latest_date=Max(“date”)).values(“language”,“latest_date”).count()
4.
我只希望得到两个最新的Python和Node会议

如何构造只获取每种语言的最新会议的查询


另外,我正在使用MySQL作为后端。

将您的
子句放在
注释
之前

从:

如果values()子句位于annotate()之前,则将使用values()子句描述的分组来计算注释

但是,如果annotate()子句位于values()子句之前,则将在整个查询集上生成注释。在本例中,values()子句仅约束在输出时生成的字段

因此,这应该做到:

Meetup.objects.values('language').annotate(latest_date=Max('date'))

Meetup.objects.filter(language=“python”).order_by('-date')[0]@VictorCastilloTorres抱歉,这不清楚-目标是在一个查询中获得所有唯一的Meetup.objects.values(“language”).annotate(latest_date=Max(“date”)[{latest_date”:datetime.date(2013,7,26),'language':u'node'},{latest_date:date:date.date(2013,7,26),“语言”:u'python'}]