Вложенные объекты в 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