Skip to content

Commit 34d2ad4

Browse files
john-partonbenesch
authored and
Rizwan Shaikh
committed
Propagate 'default' from model_field to serializer field
Fix encode#7469. Co-authored-by: Nikhil Benesch <nikhil.benesch@gmail.com>
1 parent 8dd4250 commit 34d2ad4

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

rest_framework/utils/field_mapping.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ def get_field_kwargs(field_name, model_field):
127127
kwargs['read_only'] = True
128128
return kwargs
129129

130+
if model_field.has_default():
131+
kwargs['default'] = model_field.default
132+
130133
if model_field.has_default() or model_field.blank or model_field.null:
131134
kwargs['required'] = False
132135

tests/test_model_serializer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ class Meta:
173173
TestSerializer():
174174
auto_field = IntegerField(read_only=True)
175175
big_integer_field = IntegerField()
176-
boolean_field = BooleanField(required=False)
176+
boolean_field = BooleanField(default=False, required=False)
177177
char_field = CharField(max_length=100)
178178
comma_separated_integer_field = CharField(max_length=100, validators=[<django.core.validators.RegexValidator object>])
179179
date_field = DateField()
@@ -182,7 +182,7 @@ class Meta:
182182
email_field = EmailField(max_length=100)
183183
float_field = FloatField()
184184
integer_field = IntegerField()
185-
null_boolean_field = BooleanField(allow_null=True, required=False)
185+
null_boolean_field = BooleanField(allow_null=True, default=False, required=False)
186186
positive_integer_field = IntegerField()
187187
positive_small_integer_field = IntegerField()
188188
slug_field = SlugField(allow_unicode=False, max_length=100)
@@ -210,7 +210,7 @@ class Meta:
210210
length_limit_field = CharField(max_length=12, min_length=3)
211211
blank_field = CharField(allow_blank=True, max_length=10, required=False)
212212
null_field = IntegerField(allow_null=True, required=False)
213-
default_field = IntegerField(required=False)
213+
default_field = IntegerField(default=0, required=False)
214214
descriptive_field = IntegerField(help_text='Some help text', label='A label')
215215
choices_field = ChoiceField(choices=(('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')))
216216
text_choices_field = ChoiceField(choices=(('red', 'Red'), ('blue', 'Blue'), ('green', 'Green')))

0 commit comments

Comments
 (0)