mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-03-12 07:55:48 +03:00
Support QueryDict list arguments with ListField. Closes #3155.
This commit is contained in:
parent
c940f15901
commit
0ccb148183
|
@ -157,7 +157,7 @@ See also: `TemplateHTMLRenderer`
|
||||||
|
|
||||||
Renders data returned by a serializer into an HTML form. The output of this renderer does not include the enclosing `<form>` tags or an submit actions, as you'll probably need those to include the desired method and URL. Also note that the `HTMLFormRenderer` does not yet support including field error messages.
|
Renders data returned by a serializer into an HTML form. The output of this renderer does not include the enclosing `<form>` tags or an submit actions, as you'll probably need those to include the desired method and URL. Also note that the `HTMLFormRenderer` does not yet support including field error messages.
|
||||||
|
|
||||||
**Note**: The `HTMLFormRenderer` class is intended for internal use with the browsable API. It should not be considered stable API. The template used by the `HTMLFormRenderer` class, and the context submitted to it **may be subject to change**. If you need to use this renderer class it is advised that you either make a local copy of the class and templates, or follow the release note on REST framework upgrades closely.
|
**Note**: The `HTMLFormRenderer` class is intended for internal use with the browsable API. It should not be considered a fully documented or stable API. The template used by the `HTMLFormRenderer` class, and the context submitted to it **may be subject to change**. If you need to use this renderer class it is advised that you either make a local copy of the class and templates, or follow the release note on REST framework upgrades closely.
|
||||||
|
|
||||||
**.media_type**: `text/html`
|
**.media_type**: `text/html`
|
||||||
|
|
||||||
|
|
|
@ -1285,6 +1285,10 @@ class ListField(Field):
|
||||||
# We override the default field access in order to support
|
# We override the default field access in order to support
|
||||||
# lists in HTML forms.
|
# lists in HTML forms.
|
||||||
if html.is_html_input(dictionary):
|
if html.is_html_input(dictionary):
|
||||||
|
val = dictionary.getlist(self.field_name, [])
|
||||||
|
if len(val) > 1:
|
||||||
|
# Support QueryDict lists in HTML input.
|
||||||
|
return val
|
||||||
return html.parse_html_list(dictionary, prefix=self.field_name)
|
return html.parse_html_list(dictionary, prefix=self.field_name)
|
||||||
return dictionary.get(self.field_name, empty)
|
return dictionary.get(self.field_name, empty)
|
||||||
|
|
||||||
|
|
|
@ -308,6 +308,14 @@ class TestHTMLInput:
|
||||||
assert serializer.is_valid()
|
assert serializer.is_valid()
|
||||||
assert serializer.validated_data == {}
|
assert serializer.validated_data == {}
|
||||||
|
|
||||||
|
def test_querydict_list_input(self):
|
||||||
|
class TestSerializer(serializers.Serializer):
|
||||||
|
scores = serializers.ListField(child=serializers.IntegerField())
|
||||||
|
|
||||||
|
serializer = TestSerializer(data=QueryDict('scores=1&scores=3'))
|
||||||
|
assert serializer.is_valid()
|
||||||
|
assert serializer.validated_data == {'scores': [1, 3]}
|
||||||
|
|
||||||
|
|
||||||
class TestCreateOnlyDefault:
|
class TestCreateOnlyDefault:
|
||||||
def setup(self):
|
def setup(self):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user