Skip to content

Commit 6b08e97

Browse files
committed
Form fields should use textual only value representations. Closes #3139. Closes #2416. Closes #2558.
1 parent 8d30682 commit 6b08e97

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

rest_framework/renderers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,9 @@ def render_field(self, field, parent_style):
318318
style['template_pack'] = parent_style.get('template_pack', self.template_pack)
319319
style['renderer'] = self
320320

321+
# Get a clone of the field with text-only value representation.
322+
field = field.as_form_field()
323+
321324
if style.get('input_type') == 'datetime-local' and isinstance(field.value, six.text_type):
322325
field.value = field.value.rstrip('Z')
323326

rest_framework/utils/serializer_helpers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import collections
44

5-
from rest_framework.compat import OrderedDict, unicode_to_repr
5+
from rest_framework.compat import OrderedDict, force_text, unicode_to_repr
66

77

88
class ReturnDict(OrderedDict):
@@ -54,6 +54,7 @@ class BoundField(object):
5454
"""
5555
def __init__(self, field, value, errors, prefix=''):
5656
self._field = field
57+
self._prefix = prefix
5758
self.value = value
5859
self.errors = errors
5960
self.name = prefix + self.field_name
@@ -70,6 +71,9 @@ def __repr__(self):
7071
self.__class__.__name__, self.value, self.errors
7172
))
7273

74+
def as_form_field(self):
75+
return BoundField(self._field, force_text(self.value), self.errors, self._prefix)
76+
7377

7478
class NestedBoundField(BoundField):
7579
"""

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy