Merge branch 'version-3.1' of https://github.com/tomchristie/django-rest-framework into version-3.1

This commit is contained in:
Tom Christie 2015-02-06 00:05:59 +00:00
commit 1fdfea2758

View File

@ -986,15 +986,25 @@ class ModelSerializer(Serializer):
# Fields with choices get coerced into `ChoiceField` # Fields with choices get coerced into `ChoiceField`
# instead of using their regular typed field. # instead of using their regular typed field.
field_class = ChoiceField field_class = ChoiceField
if not issubclass(field_class, ModelField): if not issubclass(field_class, ModelField):
# `model_field` is only valid for the fallback case of # `model_field` is only valid for the fallback case of
# `ModelField`, which is used when no other typed field # `ModelField`, which is used when no other typed field
# matched to the model field. # matched to the model field.
field_kwargs.pop('model_field', None) field_kwargs.pop('model_field', None)
if not issubclass(field_class, CharField) and not issubclass(field_class, ChoiceField): if not issubclass(field_class, CharField) and not issubclass(field_class, ChoiceField):
# `allow_blank` is only valid for textual fields. # `allow_blank` is only valid for textual fields.
field_kwargs.pop('allow_blank', None) field_kwargs.pop('allow_blank', None)
if postgres_fields and isinstance(model_field, postgres_fields.ArrayField):
child_model_field = model_field.base_field
child_field_class, child_field_kwargs = self.build_standard_field(
'child', child_model_field
)
field_kwargs['child'] = child_field_class(**child_field_kwargs)
return field_class, field_kwargs return field_class, field_kwargs
def build_relational_field(self, field_name, relation_info): def build_relational_field(self, field_name, relation_info):
@ -1337,6 +1347,7 @@ if postgres_fields:
child = CharField() child = CharField()
ModelSerializer.serializer_field_mapping[postgres_fields.HStoreField] = CharMappingField ModelSerializer.serializer_field_mapping[postgres_fields.HStoreField] = CharMappingField
ModelSerializer.serializer_field_mapping[postgres_fields.ArrayField] = ListField
class HyperlinkedModelSerializer(ModelSerializer): class HyperlinkedModelSerializer(ModelSerializer):