diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 4f8a4f1926..11dff5495c 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -101,6 +101,9 @@ def get_field_kwargs(field_name, model_field): kwargs['read_only'] = True return kwargs + if model_field.has_default(): + kwargs['default'] = model_field.default + if model_field.has_default() or model_field.blank or model_field.null: kwargs['required'] = False diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index 7da1b41ae5..51ac63fe23 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -173,7 +173,7 @@ class Meta: TestSerializer(): auto_field = IntegerField(read_only=True) big_integer_field = IntegerField() - boolean_field = BooleanField(required=False) + boolean_field = BooleanField(default=False, required=False) char_field = CharField(max_length=100) comma_separated_integer_field = CharField(max_length=100, validators=[]) date_field = DateField() @@ -182,7 +182,7 @@ class Meta: email_field = EmailField(max_length=100) float_field = FloatField() integer_field = IntegerField() - null_boolean_field = BooleanField(allow_null=True, required=False) + null_boolean_field = BooleanField(allow_null=True, default=False, required=False) positive_integer_field = IntegerField() positive_small_integer_field = IntegerField() slug_field = SlugField(allow_unicode=False, max_length=100) @@ -210,7 +210,7 @@ class Meta: length_limit_field = CharField(max_length=12, min_length=3) blank_field = CharField(allow_blank=True, max_length=10, required=False) null_field = IntegerField(allow_null=True, required=False) - default_field = IntegerField(required=False) + default_field = IntegerField(default=0, required=False) descriptive_field = IntegerField(help_text='Some help text', label='A label') choices_field = ChoiceField(choices=(('red', 'Red'), ('blue', 'Blue'), ('green', 'Green'))) text_choices_field = ChoiceField(choices=(('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')))