Django按字段值而不是ID排序

时间:2018-06-28 15:46:12

标签: python django django-rest-framework

我们正在使用Django 1.10和DRF。

默认情况下,客户端可以按模型的任何字段进行排序。但是-在模型上,我们保留字段ID,而不是值。我想返回一个按值排序的列表。

模型的一部分:

class Type():
    Fly = {'id': '1', 'value': 'Fly'}
    Drive = {'id': '2', 'value': 'Drive'}
    Ski = {'id': '3', 'value': 'Ski'}
    Sail = {'id': '4', 'value': 'Sail'}

class Item(BaseModel):
    TYPES = (
        (Type.Fly['id'], Type.Fly['value']),
        (Type.Drive['id'], Type.Drive['value']),
        (Type.Ski['id'], Type.Ski['value']),
        (Type.Sail['id'], Type.Sail['value']),
    )

    type_id = models.CharField(max_length=50, choices=TYPES)

模型视图的一部分:

class ItemViewSet(BaseViewMixin, BaseModelView):
    serializer_class = ItemSerializer
    filter_backends = (ItemFilter, OrderingFilter,)

现在,如果客户要求

GET ......../Item?sort=type_id

他们会收到

Fly, Drive, Ski, Sail

所需结果为:

Drive, Fly, Sail, Ski

有什么主意吗?

0 个答案:

没有答案