上海专业网站建设价,wordpress 本地 搭建网站,制作网站源码,做yahoo代拍网站公司需求:
查询的时候返回不包括SharePasswd 字段, 但是新增操作需要用到该字段
再不写多个model模型和序列化器的前提下实现 如果您在查询#xff08;GET 请求#xff09;时不希望返回 SharePasswd 字段#xff0c;但在新增#xff08;POST 请求#xff09;时需要用到该字段…需求:
查询的时候返回不包括SharePasswd 字段, 但是新增操作需要用到该字段
再不写多个model模型和序列化器的前提下实现 如果您在查询GET 请求时不希望返回 SharePasswd 字段但在新增POST 请求时需要用到该字段那么您可以在序列化器中处理这种差异。
首先确保您的序列化器在新增操作中处理 SharePasswd 字段您可以保留它在 fields 列表中。然后对于查询操作您可以重写序列化器的 to_representation 方法在序列化模型实例为字典时排除 SharePasswd 字段。 废话不多说, 直接上干货代码: 序列化器中关键代码如下:
from rest_framework import serializers
from exfile.sharefilesync.share_file_strategy_models import ShareFilePolicyclass ShareFileSerializer(serializers.ModelSerializer):共享型文件同步 策略管理 class Meta: # 查询不返回SharePasswd, 但是新增又需要该列model ShareFilePolicyfields (PolicyID, PolicyName, PolicySwich, PolicyLock, SyncMode, SynCFLOW, Protocol, SharePort,ShareHostIP, ShareName, ShareUser, SharePasswd, Priority, MountStatus)def to_representation(self, instance):# 调用父类的to_representation方法获取整个实例的序列化表示ret super().to_representation(instance)# 检查请求的方法如果是GET请求则移除SharePasswd字段if self.context[request].method GET:ret.pop(SharePasswd, None)return ret
model模型中关键代码: 以上需求可以实现在查询get请求时, 查询结果返回列布包扣sharePasswd字段, 通过postman调用显示如下: 下面通过postman执行新增操作 然后通过去数据库查看结果如下: 可以看到新增的时候SharePasswd又是能成功插入到数据库中的, 至此最上面的需求完美实现, 今天就先写到这, 后续更多实战开发技巧心得陆续更新, 谢谢您的关注!!1