python - 如何在 django 表单的查询集上使用切片?
问题描述
假设我有一个 django 模型播放器。播放器模型有一个文件名“点”一个整数字段。我需要在 from.ModelChoiceField 中显示按点数排序的前 10 名玩家。
查询集将是
Player.objects.all().order_by('-points')[:10]
但是,如果我在将设置为表单字段的查询集上使用切片,则单击提交按钮时会引发错误。
Cannot filter a query once a slice has been taken.
有什么办法可以解决这个问题?
解决方案
这似乎与此重复
但是那里的答案应该为您解决问题
取自:https ://docs.djangoproject.com/en/2.2/ref/models/querysets/
切片。如限制查询集中所述,可以使用 Python 的数组切片语法对查询集进行切片。对未计算的 QuerySet 进行切片通常会返回另一个未计算的 QuerySet,但如果您使用切片语法的“step”参数,Django 将执行数据库查询,并返回一个列表。对已评估的 QuerySet 进行切片也会返回一个列表。
另请注意,即使对未评估的 QuerySet 进行切片返回另一个未评估的 QuerySet,也不允许对其进行进一步修改(例如,添加更多过滤器或修改排序),因为这不能很好地转化为 SQL,而且它也没有明确的含义。
推荐阅读
- html - 垂直对齐中心时 iframe 折叠的高度
- swift - 'MKCoordinateRegionMake' 在 Swift 中不可用
- go - 为什么在 golang.org/x/crypto/nacl/box 中需要“out”
- c++ - Clang++ 可以在 CLion 上正常工作,但不能在 VSCode 上工作
- django - I need to append a value in an array to another value in python
- html - 如何使浮动图像居中
- .net - 使用 .NET JWT 中间件验证自定义令牌以及 Azure 令牌
- reactjs - React Link Button 不会滚动到顶部
- python - 如何根据熊猫中的不同列创建相关性?
- python - 在熊猫中按相似日期分组