class Log:
project = ForeignKey(Project)
msg = CharField(...)
date = DateField(...)
我想选择四个最近的日志条目,其中每个日志条目必须有一个唯一的项目外键。我已经在谷歌搜索上尝试了解决方案,但没有一个有效,django 文档也不太适合查找。
我试过这样的东西:
Log.objects.all().distinct('project')[:4]
Log.objects.values('project').distinct()[:4]
Log.objects.values_list('project').distinct('project')[:4]
但这要么不返回任何内容,要么返回同一项目的日志条目..
任何帮助,将不胜感激!
最佳答案
查询不是这样工作的——无论是在 Django 的 ORM 中还是在底层 SQL 中。如果要获取唯一ID,则只能查询ID。所以你需要做两个查询来获取实际的日志条目。就像是:
id_list = Log.objects.order_by('-date').values_list('project_id').distinct()[:4]
entries = Log.objects.filter(id__in=id_list)
关于Django:不同的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4935921/