为啥要自定义排序字段呢。
- 暴露表结构,有危险
- 联表排序太长了,不好看,不好用,不好维护
那怎么解决呢?
解决这个问题呢,首先有一个前提:排序的字段都是前端可见字段。
在这个前提下,我们可以更改我们的序列化器。
# 简写序列化器
class BookInfoSerializer(serializers.ModelSerializer):
author_work_age = serializers.CharField(source='author.work_age')
author_name = serializers.CharField(source='author.name')
class Meta:
model = Books
fields = ('name', 'id', 'author_name ', 'author_work_age ')
# Views
class BookInfoViewSet(GenericViewSet):
serializer_class = BookInfoSerializer
ordering_fields = ('author_work_age') # 可传入排序字段
ordering = ('-create_time') # 默认使用创建时间倒叙排序
那么如果没有这个前提呢,我要排序的字段,不是前端展示字段怎么办?
你在序列化器添加这么一个字段就行了,前端不做展示处理就行了。
这种情况的字段是很少的,基本没有。接口多一两个这种字段,对接口的影响可以基本忽略。