【问题标题】:Django rest framework - Field level validation in serializerDjango rest 框架 - 序列化程序中的字段级验证
【发布时间】:2014-11-25 00:18:55
【问题描述】:

我有一个序列化程序,我正在尝试添加字段级别验证,我需要验证序列化的某些字符字段是否为空,以及布尔字段是真还是假。

我有这个序列化程序,但即使 Ficha_publicada 为假,我也从不返回错误

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

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    使用attrs['Ficha_publicada']

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

    【讨论】:

      【解决方案2】:

      对于 Django 1.8,您需要使用稍微不同的方法签名。

      从 ( def validate_Titulo(self, attrs, source):

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

      如果你没有在 Django 1.8 中将默认的 None 添加到 source 参数,你会得到一个 TypeError 异常:

      validate_Titulo() 缺少 1 个必需的位置参数:'source'

      【讨论】:

        【解决方案3】:

        对于Django rest framework 3.0 和更新版本:

        def validate_Titulo(self, value):
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-07
          • 2014-11-20
          • 1970-01-01
          • 1970-01-01
          • 2021-09-03
          • 1970-01-01
          • 1970-01-01
          • 2015-09-01
          相关资源
          最近更新 更多