我有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]