3

I have a serializer and I'm trying to add field level validation and I need to verify if some charfields of the serialize are empty or not, and if a boolean field is true or false.

I have this serializer but I never return an error even if Ficha_publicada is false

class PublicarSerializer(serializers.Serializer):

    Titulo = serializers.CharField(required=True)
    Ficha_publicada = serializers.BooleanField()

    def validate_Titulo(self, attrs, source):
        value = attrs[source]

        if not Ficha_publicada:
            raise serializers.ValidationError("Ficha no publicada")
        return attrs

    class Meta:
        model = Fichas

3 Answers 3

6

And for Django rest framework 3.0 and more recent versions:

def validate_Titulo(self, value):
Sign up to request clarification or add additional context in comments.

Comments

3

use attrs['Ficha_publicada'] :

if not attrs['Ficha_publicada']:
    raise serializers.ValidationError("Ficha no publicada")
return attrs

Comments

3

For Django 1.8 you need to use a slightly different method signature.

From (<1.8) def validate_Titulo(self, attrs, source):

To (1.8) def validate_Titulo(self, attrs, source=None):

If you do not add the default None to the source argument in Django 1.8 you will get a TypeError exception saying:

validate_Titulo() missing 1 required positional argument: 'source'

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.