【问题标题】:How to use limit and order_by together in Django rest-framework?如何在 Django rest-framework 中同时使用 limit 和 order_by?
【发布时间】:2022-02-01 02:43:32
【问题描述】:

我想使用以下限制作为 [1:10]

data = GroupPostsModel.objects.filter(
        group_id=group_id) & GroupPostsModel.objects.filter(post_type=post_type).order_by('-time_stamp')

我试试这个

data = GroupPostsModel.objects.filter(
        group_id=group_id & GroupPostsModel.objects.filter(post_type=post_type)[1:10].order_by('-time_stamp')

但是没有用..!

【问题讨论】:

  • 你试过GroupPostsModel.objects.filter( group_id=group_id & GroupPostsModel.objects.filter(post_type=post_type).order_by('-time_stamp')[1:10]切片应该在最后。
  • 嗨@Ahtisham,Django 不允许在没有Q 对象的情况下使用&|。你也不能像那样在过滤器中写另一个查询。

标签: django django-rest-framework django-queryset django-orm


【解决方案1】:

先下单,后切片。像这样:

data = GroupPostsModel.objects.filter(group_id=group_id, post_type=post_type).order_by('-time_stamp')[1:10]

注意:建议在 try except 函数中包装查询集上的切片。好像切片失败了就会引发异常

【讨论】:

  • 谢谢,它有效...!感谢您的注意:)
【解决方案2】:

假设上面给出的查询有效,

data = GroupPostsModel.objects.filter(
        group_id=group_id) & GroupPostsModel.objects.filter(post_type=post_type).order_by('-time_stamp')

data=  data[1:10]

或者你可以按照这个语法

data = ClassName.objects.filter(your conditions)[1:10]

【讨论】:

  • 它也可以工作,感谢 Aakash...! :)
猜你喜欢
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 2020-10-07
  • 2021-05-23
  • 2020-07-04
  • 2015-04-29
  • 2016-03-15
  • 1970-01-01
相关资源
最近更新 更多