假设我有一个Django模型播放器。播放器模型的文件名“指向”一个整数字段。 我需要显示来自Model.ChoiceField中按得分排序的前10名玩家。
查询集应为
Player.objects.all().order_by('-points')[:10]
但是,如果我对将设置为表单字段的queryset进行切片,则单击提交按钮时会引发错误。
Cannot filter a query once a slice has been taken.
有什么办法解决这个问题?
答案 0 :(得分:0)
这似乎是this
的副本但是那里的答案应该为您清除东西
来自:https://docs.djangoproject.com/en/2.2/ref/models/querysets/
切片。如限制查询集所述,可以对查询集进行切片, 使用Python的数组切片语法。切片未评估的QuerySet 通常会返回另一个未评估的QuerySet,但是Django将执行 数据库查询(如果您使用切片语法的“ step”参数), 并返回一个列表。切片已评估的QuerySet 还返回一个列表。
还要注意,即使切片未评估的QuerySet也会返回 另一个未评估的QuerySet,对其进行进一步修改(例如,添加更多 过滤器或修改顺序)是不允许的,因为那是不允许的 可以很好地翻译成SQL,也没有明确的含义。