diff --git a/rest_framework/utils/field_mapping.py b/rest_framework/utils/field_mapping.py index 24fccec8c..05dd2e379 100644 --- a/rest_framework/utils/field_mapping.py +++ b/rest_framework/utils/field_mapping.py @@ -106,6 +106,21 @@ def get_field_kwargs(field_name, model_field): isinstance(model_field, models.TextField)): kwargs['allow_blank'] = True + if isinstance(model_field, models.FilePathField): + kwargs['path'] = model_field.path + + if model_field.match is not None: + kwargs['match'] = model_field.match + + if model_field.recursive is not False: + kwargs['recursive'] = model_field.recursive + + if model_field.allow_files is not True: + kwargs['allow_files'] = model_field.allow_files + + if model_field.allow_folders is not False: + kwargs['allow_folders'] = model_field.allow_folders + if model_field.choices: # If this model field contains choices, then return early. # Further keyword arguments are not valid. diff --git a/tests/test_model_serializer.py b/tests/test_model_serializer.py index c9b2d313e..93a69fe4b 100644 --- a/tests/test_model_serializer.py +++ b/tests/test_model_serializer.py @@ -67,6 +67,7 @@ class RegularFieldsModel(models.Model): time_field = models.TimeField() url_field = models.URLField(max_length=100) custom_field = CustomField() + file_path_field = models.FilePathField(path='/tmp/') def method(self): return 'method' @@ -165,6 +166,7 @@ class TestRegularFieldMappings(TestCase): time_field = TimeField() url_field = URLField(max_length=100) custom_field = ModelField(model_field=) + file_path_field = FilePathField(path='/tmp/') """) self.assertEqual(unicode_repr(TestSerializer()), expected)