joz*_*yqk 5 django django-orm django-queryset
我想在给定主键的查询集中找到相邻项,如此处所示。但是我希望这对于任何给定的查询集都有效,但我尚未为自己设置顺序。如何找到查询集的当前排序__gt并进行__lt过滤?
例如:
queryset = MyModel.objects.all().order_by('some_field')
next_obj = get_next(queryset, after_pk, 10)
...
def get_next(queryset, pk, n):
#ordering is unknown here
obj = queryset.get(pk=pk)
field = queryset.get_order_by_field_name() #???
return queryset.filter(**{field+'__gt': getattr(obj, field)})[:n]
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以通过访问queryset.query.order_by属性从order_by子句检索列的列表。
从Django文档中:
查询属性是不透明的对象。它代表查询构造的内部,而不是公共API的一部分。但是,如此处所述,腌制和解开属性的内容是安全的(并且完全受支持)。
| 归档时间: |
|
| 查看次数: |
1398 次 |
| 最近记录: |