diff options
| author | Tom Christie | 2012-10-24 20:58:10 +0100 |
|---|---|---|
| committer | Tom Christie | 2012-10-24 20:58:28 +0100 |
| commit | 3e751ccd8aa2870c125a17de6af6e1909aa2b35e (patch) | |
| tree | 83494cf52a55ef4e01612fd7552aecb969bfd357 | |
| parent | 0aed70dc8b9bf2bf6c6bbd540ffadfae9f74bbaa (diff) | |
| download | django-rest-framework-3e751ccd8aa2870c125a17de6af6e1909aa2b35e.tar.bz2 | |
Fix ModelSerializer logic for fields with default value, which should have required=False set
| -rw-r--r-- | rest_framework/serializers.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index c9f025bc..8ee9a0ec 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -406,6 +406,10 @@ class ModelSerializer(Serializer): """ Creates a default instance of a basic non-relational field. """ + kwargs = {} + if model_field.has_default(): + kwargs['required'] = False + field_mapping = { models.FloatField: FloatField, models.IntegerField: IntegerField, @@ -421,14 +425,9 @@ class ModelSerializer(Serializer): models.BooleanField: BooleanField, } try: - ret = field_mapping[model_field.__class__]() + return field_mapping[model_field.__class__](**kwargs) except KeyError: - ret = ModelField(model_field=model_field) - - if model_field.default is not None: - ret.required = False - - return ret + return ModelField(model_field=model_field, **kwargs) def restore_object(self, attrs, instance=None): """ |
