Валидация модельных сериализаторов - PullRequest
0 голосов
/ 08 июня 2018

Мне нужно изменить функцию ModelSerializer, мои ожидания таковы:

У меня есть два поля в моей модели.Оба являются charFields.

class MyModel(models.Model):
    name = models.CharField(blank=False,
                            null=False,
                            max_length=20)
    value = models.CharField(blank=True,
                             null=True,
                             max_length=20)

Мой сериализатор такой, как

class MyModelSerializer(ModelSerializer):

    class Meta: 
        model = MyModel
        fields = '__all__'

Мне нужно создать объект MyModel, используя этот сериализатор.

Теперь проблема в том, что, если я передаю значения 'bool' в мои поля, отображается сообщение об ошибке "Неправильная строка".(Как и ожидалось от Modelserializer)

{"name": True, "value": False}

Мои требования - обработать значение 'bool' и преобразовать его«bool» в «str».что должно быть уловкой, чтобы решить эту проблему.

1 Ответ

0 голосов
/ 08 июня 2018

используйте функцию to_internal_value , например, это работает:

class MyModelSerializer(ModelSerializer):
class Meta:
    model = MyModel
    fields = '__all__'

def to_internal_value(self, data):
    for field in ('name', 'value'):
        if field in data and isinstance(data[field], bool):
            data[field] = str(data[field])
    return super().to_internal_value(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...