Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork7k
Closed
Labels
Description
Checklist
- I have verified that that issue exists against the
masterbranch of Django REST framework. - I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- This is not a usage question. (Those should be directed to thediscussion group instead.)
- This cannot be dealt with as a third party library. (We prefer new functionality to bein the form of third party libraries where possible.)
- I have reduced the issue to the simplest possible case.
- I have included a failing test as a pull request. (If you are unable to do so we can still accept the issue.)
Steps to reproduce
create a serializer that subclassesserializers.Serializer with a non-required primary key relation
classSearchSerializer(serializers.Serializer):q=serializers.CharField()user=serializers.PrimaryKeyRelatedField(queryset=User.objects.all(),required=False)
call the serializer in with a request that doesn't have auser parameter
serializer=SearchSerializer(data={"q":"hello world"})serializer.is_valid(raise_exception=True)print(serializer.data)# <- KeyError 'user' is raised here
Expected behavior
the serializer should validate that the fieldq exists and ignore validating theuser field if it is not supplied in the request data. The an example request
{"q":"hello world"}should be valid, anduser should either beNone or not included in theserializer.data
Actual behavior
the serializer raises aKeyError onserializer.data ifuser is not included in the request data.