diff options
| author | Tom Christie | 2013-02-28 13:41:42 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-02-28 13:41:42 +0000 |
| commit | 183d3ec6a4aaa5e0b5b647fc9c3e715a01ce183c (patch) | |
| tree | bdcc63771ff47f39d4b06ebc2d5590e81da69200 /rest_framework/serializers.py | |
| parent | 02ee6e5bf082ad3588e68b17bcbb6ff7f8d6c96d (diff) | |
| download | django-rest-framework-183d3ec6a4aaa5e0b5b647fc9c3e715a01ce183c.tar.bz2 | |
Move ModelSerializer field_mapping into an attribute for easier overriding.
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 43 |
1 files changed, 22 insertions, 21 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 91af2af2..ba9e9e9c 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -418,6 +418,27 @@ class ModelSerializer(Serializer): """ _options_class = ModelSerializerOptions + field_mapping = { + models.AutoField: IntegerField, + models.FloatField: FloatField, + models.IntegerField: IntegerField, + models.PositiveIntegerField: IntegerField, + models.SmallIntegerField: IntegerField, + models.PositiveSmallIntegerField: IntegerField, + models.DateTimeField: DateTimeField, + models.DateField: DateField, + models.TimeField: TimeField, + models.EmailField: EmailField, + models.CharField: CharField, + models.URLField: URLField, + models.SlugField: SlugField, + models.TextField: CharField, + models.CommaSeparatedIntegerField: CharField, + models.BooleanField: BooleanField, + models.FileField: FileField, + models.ImageField: ImageField, + } + def get_default_fields(self): """ Return all the fields that should be serialized for the model. @@ -515,28 +536,8 @@ class ModelSerializer(Serializer): kwargs['choices'] = model_field.flatchoices return ChoiceField(**kwargs) - field_mapping = { - models.AutoField: IntegerField, - models.FloatField: FloatField, - models.IntegerField: IntegerField, - models.PositiveIntegerField: IntegerField, - models.SmallIntegerField: IntegerField, - models.PositiveSmallIntegerField: IntegerField, - models.DateTimeField: DateTimeField, - models.DateField: DateField, - models.TimeField: TimeField, - models.EmailField: EmailField, - models.CharField: CharField, - models.URLField: URLField, - models.SlugField: SlugField, - models.TextField: CharField, - models.CommaSeparatedIntegerField: CharField, - models.BooleanField: BooleanField, - models.FileField: FileField, - models.ImageField: ImageField, - } try: - return field_mapping[model_field.__class__](**kwargs) + return self.field_mapping[model_field.__class__](**kwargs) except KeyError: return ModelField(model_field=model_field, **kwargs) |
