mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-02 20:54:42 +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.
|
||||
|
||||
**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`
|
||||
|
||||
|
|
|
@ -1285,6 +1285,10 @@ class ListField(Field):
|
|||
# We override the default field access in order to support
|
||||
# lists in HTML forms.
|
||||
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 dictionary.get(self.field_name, empty)
|
||||
|
||||
|
|
|
@ -308,6 +308,14 @@ class TestHTMLInput:
|
|||
assert serializer.is_valid()
|
||||
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:
|
||||
def setup(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user