Fixed #8278: fixed `QueryDict.update(QueryDict)`. Thanks, julien.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@8705 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Jacob Kaplan-Moss 2008-08-29 16:49:19 +00:00
parent cd0b65bcf7
commit 6a8dcafb57
2 changed files with 15 additions and 2 deletions

View File

@ -211,6 +211,11 @@ class QueryDict(MultiValueDict):
def update(self, other_dict): def update(self, other_dict):
self._assert_mutable() self._assert_mutable()
f = lambda s: str_to_unicode(s, self.encoding) f = lambda s: str_to_unicode(s, self.encoding)
if hasattr(other_dict, 'lists'):
for key, valuelist in other_dict.lists():
for value in valuelist:
MultiValueDict.update(self, {f(key): f(value)})
else:
d = dict([(f(k), f(v)) for k, v in other_dict.items()]) d = dict([(f(k), f(v)) for k, v in other_dict.items()])
MultiValueDict.update(self, d) MultiValueDict.update(self, d)

View File

@ -436,6 +436,14 @@ Traceback (most recent call last):
... ...
UnicodeEncodeError: ..., HTTP response headers must be in US-ASCII format UnicodeEncodeError: ..., HTTP response headers must be in US-ASCII format
#
# Regression test for #8278: QueryDict.update(QueryDict)
#
>>> x = QueryDict("a=1&a=2", mutable=True)
>>> y = QueryDict("a=3&a=4")
>>> x.update(y)
>>> x.getlist('a')
[u'1', u'2', u'3', u'4']
""" """
from django.http import QueryDict, HttpResponse from django.http import QueryDict, HttpResponse