mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
fix for NestedBoundField. When nested field uses custom to_representation and to_internal_value, then self.value of NestedBoundField can be direct object, not a dict. For example, to_representation can convert an object to a string.
This commit is contained in:
parent
928f7cb40f
commit
43b45f9b6c
|
@ -100,19 +100,25 @@ class NestedBoundField(BoundField):
|
||||||
|
|
||||||
def __getitem__(self, key):
|
def __getitem__(self, key):
|
||||||
field = self.fields[key]
|
field = self.fields[key]
|
||||||
value = self.value.get(key) if self.value else None
|
if isinstance(self.value, dict):
|
||||||
|
value = self.value.get(key) if self.value else None
|
||||||
|
else:
|
||||||
|
value = self.value if self.value else None
|
||||||
error = self.errors.get(key) if self.errors else None
|
error = self.errors.get(key) if self.errors else None
|
||||||
if hasattr(field, 'fields'):
|
if hasattr(field, 'fields'):
|
||||||
return NestedBoundField(field, value, error, prefix=self.name + '.')
|
return NestedBoundField(field, value, error, prefix=self.name + '.')
|
||||||
return BoundField(field, value, error, prefix=self.name + '.')
|
return BoundField(field, value, error, prefix=self.name + '.')
|
||||||
|
|
||||||
def as_form_field(self):
|
def as_form_field(self):
|
||||||
values = {}
|
if isinstance(self.value, dict):
|
||||||
for key, value in self.value.items():
|
values = {}
|
||||||
if isinstance(value, (list, dict)):
|
for key, value in self.value.items():
|
||||||
values[key] = value
|
if isinstance(value, (list, dict)):
|
||||||
else:
|
values[key] = value
|
||||||
values[key] = '' if (value is None or value is False) else force_text(value)
|
else:
|
||||||
|
values[key] = '' if (value is None or value is False) else force_text(value)
|
||||||
|
else:
|
||||||
|
values = self.value
|
||||||
return self.__class__(self._field, values, self.errors, self._prefix)
|
return self.__class__(self._field, values, self.errors, self._prefix)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user