我有一个Read
与模型相关的Article
模型。我想做的是创建一个查询集,其中文章是唯一的并且按date_added
. 由于我使用的是 postgres,因此我更喜欢使用该.distinct()
方法并指定article
字段。像这样:
articles = Read.objects.order_by('article', 'date_added').distinct('article')
但是,这并没有产生预期的效果,而是按照创建的顺序对查询集进行排序。我知道关于Django 文档.distinct()
和.order_by()
在 Django 文档中的注释,但我看不到它在这里适用,因为它提到的副作用是会有重复,我没有看到。
# To actually sort by date added I end up doing this
articles = sorted(articles, key=lambda x: x.date_added, reverse=True)
这会在我真正需要它之前执行整个查询,如果有很多记录,它可能会变得非常慢。我已经使用select_related()
.
是否有更好、更有效的方法来创建具有相关模型和 order_by 日期唯一性的查询?
UPDATE 理想情况下,输出将是 Read 实例的查询集,其中它们的相关文章在查询集中是唯一的,并且仅使用 Django orm(即在 python 中排序)。