我正在使用带有MySQL的Django 1.6.

我有这些型号:

class Student(models.Model):
     username = models.CharField(max_length=200, unique = True)

class Score(models.Model)
     student = models.ForeignKey(Student)
     date = models.DateTimeField()
     score = models.IntegerField()

我想获取每个学生的最新成绩记录.
我试过了:

Score.objects.values('student').annotate(latest_date=Max('date'))

以及:

Score.objects.values('student__username').annotate(latest_date=Max('date'))

如所描述的Django ORM - Get the latest record for the group 但这并没有帮助.

推荐答案

这应该可以在Django 1.2+和MySQL上运行:

Score.objects.annotate(
  max_date=Max('student__score__date')
).filter(
  date=F('max_date')
)

Django相关问答推荐

对象Django API中的对象

Django动态页面.为什么我的代码不工作?

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

使用OuterRef过滤器获取Django记录的最大值

为什么 Django 在错误的目录中寻找模板?

UpdateView 不会对 from 属性进行数据绑定

int_list_validator在 Django 表单中不起作用

Django授权判断具有通配符模式的URL

Django REST Framework 图片上传

Django 模型中的隐藏字段

在 Scrapy 中访问 django 模型

如何在 Django ORM 中执行 GROUP BY ... COUNT 或 SUM?

直接在Django的模板中访问ForeignKey

Django Calendar日历小部件?

将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

将 XML 从 URL 解析为 python 对象

Django -- User.DoesNotExist 不存在?

在 django 中的查询集上运行 explain的简单方法

Django查询否定

如何将 django csrf 令牌直接嵌入 HTML?