我在Stackoverflow上看到过一些提到这个问题的帖子,但是我不知道如果查询发生变化,如何解决业务需求。
我正在尝试获取向组织发送消息的最后10个联系人
messages = (Message.objects.order_by('-created_at').distinct('contact_id'))
但是,我得到这个错误:
SELECT DISTINCT ON expressions must match initial ORDER BY expressions
LINE 1: SELECT DISTINCT ON ("messages"."contact_id") "messages"."id"...
我发现非重复列必须与order by列匹配,但非重复created_at并不是业务解决问题所需的。
有什么建议吗?
1条答案
按热度按时间b1payxdu1#
distinct()
中的字段必须包含在内,并且必须是order_by()
中的第一个字段,在您的示例中为contact_id
:Docs: https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct