django之从 Django 查询集中获取第一个对象

不点 阅读:36 2025-04-02 23:11:03 评论:0

给定以下代码:

randomItemQS = Item.objects.filter().exclude(id__in=[o.id for o in collection]).order_by('?') 
randomItem = randomItemQS[:1] 
calculation = randomItem.method() / constant 

如何确保 randomItemItem 而不是 QuerySet?

如果我从 manage.py shell 运行代码,那么我会得到预期的结果。但是,从 View 运行此代码会导致 AttributeError 'QuerySet' object has no attribute 'method',并指示错误发生在最后一行。

我错过了什么?

编辑:抱歉,我应该更具体一些——我在 shell 中工作得很好,但它在 View 中不起作用。会有什么不同?

请您参考如下方法:

索引就可以了,切片在不执行的情况下向QS添加了一个LIMIT查询:

randomItem = randomItemQS[0] 


标签:Django
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号