DRF动态获取字段
【摘要】 项目名称drf-dynamic-fields 项目描述提供了一个mixin,用于serializer,实现动态配置返回字段的效果。在获取数据的API的时候,在URL中加入一个查询字段fields,用来过滤返回数据的字段,减少网络传输的数据。github地址:https://github.com/dbrgn/drf-dynamic-fields 安装pip install drf-dynam...
项目名称
- drf-dynamic-fields
项目描述
- 提供了一个mixin,用于serializer,实现动态配置返回字段的效果。在获取数据的API的时候,在URL中加入一个查询字段fields,用来过滤返回数据的字段,减少网络传输的数据。
- github地址:https://github.com/dbrgn/drf-dynamic-fields
安装
pip install drf-dynamic-fields
- 如果不想在项目中多加一个库,也可以直接将项目中drf_dynamic_fields目录下的init.py文件中的类直接复制出来到自己的项目中。 直接下载init文件 -->点这里。
配置
-
在创建serializer的时候,把DynamicFieldsMixin这个mixin加上即可。
-
下面的代码是一个示例,我们创建了一个BookSerializer,加入了DynamicFieldsMixin。
from rest_framework import serializers from drf_dynamic_fields import DynamicFieldsMixin from .models import Book class BookSerializer(DynamicFieldsMixin, serializers.ModelSerializer): class Meta: model = Book fields = '__all__'
然后,就可以直接用了~
使用
-
我们可以在url中使用fields来指定要返回的字段,例如我们在查询中仅需要获取图书的书名(name)和作者(author),那么URL可以写成这个样子,多个字段间使用逗号分隔即可:
GET https://wxy.email/book/?fields=name,author
-
对于获取单条信息的查询也同样好使:
GET https://wxy.email/book/666/?fields=name,author
-
如果我们仅仅需要某些字段不显示,则可以使用omit参数省略一些字段,例如我们在查询中其他的信息都要,但是图书描述信息字段(description)不要,那么我们可以把URL写成这个样子:
GET https://wxy.email/book/?omit=description
-
参考信息: 作者在github项目中实际上说到为了保持项目的简单,实际上已经不再接受新需求的添加了。
-
如果需要更强大的字段动态获取功能,则可以参考这个项目https://github.com/rsinger86/drf-flex-fields。
-
本文转载自:knktc
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)