Как переопределить метод родительского класса в дочернем классе с помощью 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 на выходе, поэтому я использовал to_representation в AccessInternalSerializer, как показано ниже,

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 в выводе. но он также возвращает эти поля private_key и ca_cert в классе AccessSerializer (дочерний класс)

я думаю, что это из-за того, что to_representation в AccessInternalSerializer (это родительский класс) наследуется в дочернем классе AccessSerializer.

Я не хочу, чтобы эти поля private_key и ca_cert возвращались в выходных данных класса AccessSerializer.

как я могу это исправить. может кто-нибудь помочь мне с этим. я новичок в python и django. спасибо.

Вернуться на верх