python - 如何使用 python 和 django 使某些字段在 api 输出中不可见?
问题描述
我有父(AccessInternalSerializer)和子序列化器(AccessSerializer)类,如下所示,
class AccessInternalSerializer(AccessBaseSerializer):
private_key = serializers.FileField(
allow_null= True,
required=False)
ca_cert=serializers.FileField(
allow=True,
required=False)
def to_representation(self, obj):
data = super().to_representation(obj)
data['private_key'] = obj.private_key
data['ca_cert'] = obj.ca_cert
return data
class Meta(AccessBaseSerializer.Meta):
model=Access
extra_kwargs = {
'auth_failure': {
read-only: True
}
}
class AccessSerializer(AccessInternalSerializer):
private_key = serializers.FileField(
write_only=True,
allow_null=True,
required=False)
ca_cert=serializers.FileField(
write_only=True,
allow_null=True,
required=False)
class Meta(AccessInternalSerializer.Meta):
extra_kwargs={
**AccessInternalsSerializer.Meta.extra_kwargs,
'private_key': {
'write_only':True,
}
'ca_cert': {
'write_only': True,
}
}
现在由于某种原因,上面的代码使用 AccessSerializer 在 api 的输出中显示了 private_key 和 ca_cert。
使用 AccessInternalSerializer to_representation,我使 private_key 和 ca_cert 字段在使用 AccessInternalSerializer 的 api 输出中可见。
但是使用 AccessSerializer 的行为相同。
我希望 api 输出不会使用 AccessSerializer 返回 private_key 和 ca_cert 字段。
我不确定我哪里出错了。我是 python 和 django 编程的新手。我很长时间以来都坚持这一点。
有人可以帮我解决这个问题。谢谢。
解决方案
推荐阅读
- javascript - 字符串 toUpperCase() 的数组不起作用
- android - Android > 3.0 中位图的支持数据存储在哪里?
- c++ - 如果我们通过引用传递变量,递归中使用的堆栈空间量是否为零?
- android - 如何将 Firebase 实时数据库子值移动到 android 工作室中的另一个子值?
- algorithm - 求解递归关系 T(n) = n*T(n - 1) + n! (n > 0, T(0) = 2)
- spring - Spring Boot icw 旧版 Spring 应用程序
- javascript - 使用转换对象重命名 JavaScript 中的对象键
- c++ - 写入超过 1GB 的 .txt 文件时的奇怪行为
- python - 在 Keras 中将模型合二为一
- laravel - 当队列中的所有 Laravel 作业完成时运行一次函数