我有doctors
SearchQuerySet
类型的对象,我想转换为QuerySet:
医生 = SearchQuerySet()。dwithin('location',point_data,max_dist).distance('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
queryset与doctors
具有相同的顺序SearchQuerySet具有pk的顺序。
答案 0 :(得分:1)
使用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]