Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在DjangoREST中使用自定义函数实现排序?_Django_Django Models_Django Rest Framework - Fatal编程技术网

如何在DjangoREST中使用自定义函数实现排序?

如何在DjangoREST中使用自定义函数实现排序?,django,django-models,django-rest-framework,Django,Django Models,Django Rest Framework,我目前正在使用DjangoREST作为服务器。 我想做的是根据自定义函数对查询集进行排序 例如,模型可以如下所示: class Product(models.Model): latitude = models.FloatField() longitude = models.FloatField() 详细地说,我想发送一个带有我当前地质坐标的请求,并且我希望根据产品和我之间的距离对响应进行排序 如果相关的话,我正在使用ModelSerializers和mixins 计算非常繁琐,

我目前正在使用DjangoREST作为服务器。 我想做的是根据自定义函数对查询集进行排序

例如,模型可以如下所示:

class Product(models.Model):
    latitude = models.FloatField()
    longitude = models.FloatField()
详细地说,我想发送一个带有我当前地质坐标的请求,并且我希望根据产品和我之间的距离对响应进行排序

如果相关的话,我正在使用
ModelSerializers
mixins

计算非常繁琐,这意味着它不能由SQL语句完成,因此在这种情况下,
annotate
不是很有用。如果我使用:

queryset = Product.objects.all()
result = sort(queryset,lambda a: Somefunction(a))
result
是一个不再是查询集的列表,因此我无法重写DjangoREST
filter
类的
filter\u queryset
或相关方法,因为它们希望返回查询集


如何使用DjangoREST完成这个看似简单的任务?

为什么不将列表转换为json并将其作为响应发送?您是否使用了
GeoDjango
?看看这个:@themanatuf非常感谢你的链接!按什么排序?如果您想按任何自定义函数进行排序,那么实际的索引取决于您想要排序的是什么?为什么不将列表转换为json并将其作为响应发送?是否使用
GeoDjango
?看看这个:@themanatuf非常感谢你的链接!按什么排序?如果您想按任何自定义函数排序,那么索引实际上取决于您想要排序的是什么?