遇到异常行为django ORM查询。打印时过滤的查询集只显示一个值,但当我尝试在该查询集上执行.first()和.last()时,它显示两个不同的值
在下面的查询中,我有一个文档表,其中有一个外键--> user_id一个用户可以在文档表中有多个条目。我想为给定的user_id在文档表中找到最新的条目id。查询集只显示一个条目,但doing .first()显示的条目甚至不是查询集的一部分。为什么会出现这种行为?
qs = Document.objects.filter(user_id=1537).values('user_id').annotate(max_id=Max('id '))
输出:<QuerySet [用户名:1537,最大值:37}]>
qs.first()
输出:{“user_id”:1537,“max_id”:33}
qs.last()
输出:{“user_id”:1537,“max_id”:37}
1条答案
按热度按时间ssgvzors1#
使用值**('user_id'),导致无序查询集,是导致意外行为的原因。不能保证执行first()或last()的结果将是最大值。因此,按'-max id'**排序以保证正确排序。尝试此操作;
字符串
希望对你有帮助:)