Когда вы пишете сериализатор, тривиально указывать, какие поля будут включены (через Meta
fields
), устанавливая права на чтение и запись на них и проверяя их. Тем не менее, мне было интересно узнать, есть ли простой способ указать, что только ожидаемые ожидаемые поля и любые дополнительные ключи должны были вызывать ошибку.
например. скажем, у меня есть сериализатор
class ModelASerializer(serializers.ModelSerializer):
class Meta:
model = models.ModelA
fields = ('name', 'number')
Предположим далее, что у меня нет никаких проверок.
И я POST
загружаю эту полезную нагрузку для создания нового экземпляра
{
"name": "test",
"number": 5
}
Все в порядке.
Но предположим, что мой API изменился, и теперь я также сохраняю новое поле title
, но забудьте обновить свой сериализатор. Клиенты будут отправлять полезную нагрузку, которая выглядит как
{
"name": "test",
"number": 5,
"title": "Mr"
}
Однако сериализатор просто игнорирует дополнительный ключ, не создавая исключение.
Итак, мой вопрос: есть ли способ заставить сериализатор ожидать только поля, указанные в fields
или - если это не теги ModelSerializer
-, указанные как члены, и вызывать ошибку, если это не случай?