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

时间:2016-03-01 17:01:43

标签: django django-models django-rest-framework

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

为了说明,模型可以是这样的:

class Product(models.Model):
    latitude = models.FloatField()
    longitude = models.FloatField()

详细地说,我想用我当前的地质坐标发送请求,我希望根据产品与我之间的距离对响应进行排序。

如果相关,我使用的是ModelSerializersmixins

计算非常重要,这意味着它无法通过SQL语句完成,因此annotate在这种情况下不是很有用。如果我使用:

queryset = Product.objects.all()
result = sort(queryset,lambda a: Somefunction(a))

result是一个不再是查询集的列表,因此我无法覆盖DjangoREST filter_queryset类的filter或相关方法,因为它们期望返回一个查询集。

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

0 个答案:

没有答案