Django:不同的外键

mrm*_*vin 11 django foreign-keys distinct

class Log:
 project = ForeignKey(Project)
 msg = CharField(...)
 date = DateField(...)
Run Code Online (Sandbox Code Playgroud)

我想选择四个最新的日志条目,其中每个日志条目必须具有唯一的项目外键.我在谷歌搜索上尝试了解决方案,但它们都不起作用,而django文档对于查找来说并不是那么好.

我试过像这样的东西:

Log.objects.all().distinct('project')[:4]
Log.objects.values('project').distinct()[:4]
Log.objects.values_list('project').distinct('project')[:4]
Run Code Online (Sandbox Code Playgroud)

但是要么返回任何内容,要么返回同一项目的Log条目.

任何帮助,将不胜感激!

Dan*_*man 20

查询不能像那样工作 - 无论是在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)
Run Code Online (Sandbox Code Playgroud)