Django:不同的外键

标签 django foreign-keys distinct

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/

相关文章:

python - 最小化 Django : . 中的数据库命中 values_list() 依赖于先前的 .filter() 子句

python - django外部应用程序安装 "Error: No module named nested-inlines"

MySQL-将数据添加到2个表中,其中1个表有外键

mysql - (Hibernate,mysql)由: java. sql.SQLException引起:字段 'id'没有默认值

mysql - SELECT DISTINCT 并计数

python - 将值从html模板传递到Django中的views.py

django - 在共享托管环境中为 Django 1.5 提供静态管理文件

mysql - 文档显示 CakePHP 不支持组合键

mysql - 与表 B 连接时获取表 A 的 DISTINCT 行的有效方法

python - 用于获取多个值的 Django MySQL 不同查询