From 929937693c7089046cd66116db9b3da42bfe6270 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Wed, 7 Feb 2018 20:02:41 +0100 Subject: [PATCH] [WIP/RFC] use field default value if not allow_null This is meant to be used with FK remote field lookups (`source = 'foo.bar'`), where `foo` is a model and `bar` is `None` there. serializers.CharField(source='foo.bar', default='default') --- rest_framework/serializers.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 33da0bad0..f4a99b15d 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -499,6 +499,13 @@ class Serializer(BaseSerializer): # resolve the pk value. check_for_none = attribute.pk if isinstance(attribute, PKOnlyObject) else attribute if check_for_none is None: + if not field.allow_null: + try: + ret[field.field_name] = field.get_default() + except SkipField: + pass + else: + continue ret[field.field_name] = None else: ret[field.field_name] = field.to_representation(attribute)