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
Audoen
  • 433
  • 1
  • 5
  • 11

3 Answers3

5

And for Django rest framework 3.0 and more recent versions:

def validate_Titulo(self, value):
Vladir Parrado Cruz
  • 2,301
  • 21
  • 27
3

use attrs['Ficha_publicada'] :

if not attrs['Ficha_publicada']:
    raise serializers.ValidationError("Ficha no publicada")
return attrs
Hasan Ramezani
  • 5,004
  • 24
  • 30
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'

A. J. Parr
  • 7,731
  • 2
  • 31
  • 46