Repository navigation
Raise validation when the field is not mapped #9243
Replies: 1 comment
|
You can reject unknown input keys in from collections.abc import Mapping
from rest_framework import serializers
from rest_framework.exceptions import ErrorDetail
class StrictInputSerializer(serializers.Serializer):
def to_internal_value(self, data):
if isinstance(data, Mapping):
unknown = set(data) - set(self.fields)
if unknown:
raise serializers.ValidationError({
name: [ErrorDetail("Unknown field.", code="unknown_field")]
for name in unknown
})
return super().to_internal_value(data)
class DummySerializer(StrictInputSerializer):
foo = serializers.CharField()
assert DummySerializer(data={"foo": "bar"}).is_valid()
invalid = DummySerializer(data={"foo": "bar", "bar": "foo"})
assert not invalid.is_valid()
assert invalid.errors["bar"][0].code == "unknown_field"Checking against A few boundaries matter:
Checked the exact example plus partial, nested and Reference: overriding |
Uh oh!
There was an error while loading. Please reload this page.
What's a better way to validate fields in a restricted mode like this:
All reactions