mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 09:36:49 +03:00
Merge pull request #2496 from jpadilla/version-3.1
Support for Django 1.8 ArrayField
This commit is contained in:
commit
f1e7ce54a1
|
@ -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):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user