Вложенные объекты в Django REST Framework, когда поле требуется для POST и не требуется для DELETE

Я использую serializers при работе с nested objects. По аналогии с примером Django REST framework у меня есть:

class UserSerializer(serializers.Serializer):
    email = serializers.EmailField(required=True) #Not required for POST (see following)
    username = serializers.CharField(max_length=100, required=True) #Not required for DELETE (see following)

class PostCommentSerializer(serializers.Serializer):
    user = UserSerializer(required=True)

class DeleteCommentSerializer(serializers.Serializer):
    user = UserSerializer(required=True)

У меня возникла ситуация, когда я хочу, чтобы только username требовалось (проверялось) при использовании PostCommentSerializer, и только email требовалось при использовании DeleteCommentSerializer. Какие у меня есть варианты? В моих текущих настройках и email, и имя пользователя требуются как для POST, так и для DELETE.

Вы можете использовать функцию validate для проверки как PostCommentSerializer, так и DeleteCommentSerializer следующим образом:

     def validate(self, data):
        if not data.get('username'):
            raise serializers.ValidationError(error message here)
        return data
     
     def validate(self, data):
       if not data.get('email'):
          raise serializers.ValidationError(error message here)
       return data
  
Вернуться на верх