python - 如何使用python和django覆盖子类中的父类方法?
问题描述
我不想使用在父类中定义的 to_representation 方法在子类中使用。
我有一个父类 AccessInternalSerializer 和子类 AccessSerializer。下面是我的代码,
class AccessInternalSerializer(AccessBaseSerializer):
private_key = serializers.FileField(
allow_null = True,
required=False)
ca_cert = serializers.FileField(
allow_null = True,
required=False)
class Meta(AccessBaseSerializer.Meta):
model = Access
extra_kwargs = {
'password': {
'trim_whitespace': False
}
}
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(AcessInternalSerializer.Meta):
extra_kwargs = {
**AccessInternalSerializer.Meta.extra.kwargs,
'private_key': {
'write_only': True
}
'ca_cert': {
'write_only': True
}
}
上面的代码有效。但是 AccessusernameInternalSerializer 没有在输出中返回 private_key 和 ca_cert 字段,因此我在 AccessInternalSerializer 中使用了 to_representation,如下所示,
class AccessInternalSerializer(AccessBaseSerializer):
private_key = serializers.FileField(
allow_null = True,
required=False)
ca_cert = serializers.FileField(
allow_null = 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 = {
'password': {
'trim_whitespace': False
}
}
上面的代码有效。它在输出中返回 private_key 和 ca_cert 字段。但它也会在 AccessSerializer 类(子类)中返回这些字段 private_key 和 ca_cert 字段
我认为这是因为 AccessInternalSerializer(即父类)中的 to_representation 在子类 AccessSerializer 中被继承。
我不希望在 AccessSerializer 类输出中返回这些字段 private_key 和 ca_cert 字段。
我怎样才能解决这个问题。有人可以帮我解决这个问题。我是 python 和 django 的新手。谢谢。
解决方案
推荐阅读
- python - 如何在 Django 视图中使用 for 循环返回每次迭代
- javascript - 邮件脚本返回带有登录页面的电子表格,而不是电子表格数据
- sql - 使用 sql 在列级别获取最近 2 个月的员工人数?
- r - 如何为 plotly sunburst 图格式化数据
- excel - 当我在列表视图中过滤并选择过滤器行并输入一些值时,在列表视图中是正确的,但在 excel 中出现在第一行
- django - 如何在 ModelSerializer 上获取自定义字段
- android - Kotlin 注释 @Parcelize 可靠性
- excel - 将范围复制到目的地并返回目的地范围
- python - 使用 python 下载 jpg 时出错导致:[SSL: CERTIFICATE_VERIFY_FAILED]
- r - 将 select 函数与 dplyr 一起使用时保留列标签