我目前正在使用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_queryset
类的filter
或相关方法,因为它们期望返回一个查询集。
如何使用DjangoREST完成这个看似简单的任务?