我有一张与下面相同的表
id|user|datetime|action
此表记录了每个用户的操作及其我希望获得所有用户执行的最新操作的时间。我测试了这些方法
Entry.objects.order_by('datetime','user').distinct('user')
和
Entry.objects.latest('datetime').distinct('user')
但他们都返回错误。例如,第二次尝试说:
SELECT DISTINCT ON expressions must match initial ORDER BY expressions
如何按所有用户执行的最新操作过滤行?
答案 0 :(得分:3)
尝试使用以下代码:
Entry.objects.all().order_by('user', '-datetime').distinct('user')
答案 1 :(得分:2)
来自django doc我们有:
指定字段名称时,必须在QuerySet中提供order_by(),order_by()中的字段必须以distinct()中的字段开头,顺序相同。