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
如何确保 randomItem
是 Item
而不是 QuerySet?
如果我从 manage.py shell
运行代码,那么我会得到预期的结果。但是,从 View 运行此代码会导致 AttributeError 'QuerySet' object has no attribute 'method'
,并指示错误发生在最后一行。
我错过了什么?
编辑:抱歉,我应该更具体一些——我在 shell 中工作得很好,但它在 View 中不起作用。会有什么不同?
请您参考如下方法:
索引就可以了,切片在不执行的情况下向QS添加了一个LIMIT查询:
randomItem = randomItemQS[0]
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。