如何在不更改顺序的情况下将SearchQuerySet转换为QuerySet



我有SearchQuerySet类型的doctors对象,我想转换为QuerySet:

doctors=SearchQuerySet().dwithin('location',point_data,max_dist).ddistance('location',point_data).order_by('distance')

results = [ r.pk for r in doctors ]
address_key = Address.objects.all()
add_obj = address_key.filter(pk__in=results)

现在add_obj是QuerySet的类型。

add_obj查询集的顺序与doctors SearchQuerySet的顺序不同。

使用pk__in时无法使用列表的顺序。

另一种选择是使用in_bulk获取所有由id键控的对象。然后使用列表理解构建有序列表。

results = [r.pk for r in search_results]
objects = MyModel.objects.in_bulk(results)
objects_in_order = [obj[pk] for pk in objects]

相关内容

最新更新