我想找到一个查询集中给定主键的相邻项,就像这里所问的那样。但是我希望这适用于任何给定的查询集,即我没有自己设置排序方式。如何找到用于__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]
order_by
似乎是一个数组,尽管据我所知,后续的.order_by()
调用会覆盖之前的调用,所以我猜想我想要的值总是queryset.query.order_by[-1]
? - jozxyqk