首页 > 解决方案 > 如何配置我的自定义序列化模型?

问题描述

我想将此序列化程序设置为只接受二进制数,但它只接受 1 或 0。它不接受 10010101 或其他类似的数字。我怎样才能使一个函数只包含 1 和 0 数字。

from .models import Binary
from rest_framework import serializers

class BinarySerializer(serializers.ModelSerializer):

    def validate_binNum(self, value):
        if value is not 1 or 0:
            raise serializers.ValidationError('binary number must have just 0 or 1.')




    class Meta:
        model = Binary 
        fields = '__all__'

标签: pythonpython-3.xdjango-modelsdjango-rest-frameworkdjango-forms

解决方案


除了将二进制数存储为 a之外models.PositiveInteger,您还可以将其存储为 a models.CharField,并且无论何时要验证输入,都可以执行以下操作:

def validate_binNum(self, value):
  try:
    number = int(value, 2)
  except ValueError:
    raise serializers.ValidationError('binary number must have just 0 or 1.')

每当您想使用该值时,您都可以简单地执行number = int(binNum, 2)


推荐阅读