django中的order_by()shice querySet
我有order_by()
模型django,并获得了QuerySet以下结果:
queryset = <QuerySet [<MyModel: MyModel object (4)>, <MyModel: MyModel object (2)>,
<MyModel: MyModel object (1)>, <MyModel: MyModel object (3)>, <MyModel: MyModel object (5)>]>
结果未按ID进行排序。
而且我想要具有myModel
的ID大于1
的slice QuerySet,以获取以下结果:
new_queryset = <QuerySet [<MyModel: MyModel object (4)>, <MyModel: MyModel object (2)>]>
是否有任何方法可以在没有这样的循环的情况下切片以减少查询?
for index in range(len(queryset)):
if queryset[index].id == 1:
new_queryset = queryset[:index]
break
I have order_by()
model django and got queryset following result:
queryset = <QuerySet [<MyModel: MyModel object (4)>, <MyModel: MyModel object (2)>,
<MyModel: MyModel object (1)>, <MyModel: MyModel object (3)>, <MyModel: MyModel object (5)>]>
The result is not sorted by id.
And I want slice queryset that have order MyModel
with id greater than 1
to get the following results:
new_queryset = <QuerySet [<MyModel: MyModel object (4)>, <MyModel: MyModel object (2)>]>
Is there any way to slice without loop like this to reduce the query ?
for index in range(len(queryset)):
if queryset[index].id == 1:
new_queryset = queryset[:index]
break
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设您是基于
Publish_dateTime
和修改的
订购QuerySet,则可以简单地使用所需ID的记录,然后根据与对象相关的订购,过滤QuerySet,像这样:您将获得结果,即在所需的对象之前发布帖子,或者有相同的时间,但最新修改的日期
Assuming that you are ordering the queryset based on
publish_datetime
andmodified
, you can simply get the record with needed id, and filter the queryset according to the ordering relevant to the object, like this:You will get the results where posts were published before the needed object, or with the same published time, but with more recent modified date
您可以使用
过滤器
或排除
querySetManager
提供的功能。基本上,您可以执行以下操作:You can make use of
filter
orexclude
functions that theQuerySetManager
provides. Basically you can do the following:您可以将列表结果切成如下所示:
5表示只有5个记录将根据您的过滤QuerySet显示。
You can slice the list result as shown below:
The 5 means the only 5 records would be displayed according to your filtered queryset.