Fixed QueryDict.setlistdefault.

It was broken by a seemingly innocuous change in MultiValueDict.
Document the pitfall for now. This is fragile and should be
considered for refactoring.
This commit is contained in:
Aymeric Augustin 2012-07-25 19:10:40 +02:00
parent 69f4856f23
commit f3c9a16a42
1 changed files with 4 additions and 2 deletions

View File

@ -339,7 +339,8 @@ class MultiValueDict(dict):
def setdefault(self, key, default=None): def setdefault(self, key, default=None):
if key not in self: if key not in self:
self[key] = default self[key] = default
return default # Do not return default here because __setitem__() may store
# another value -- QueryDict.__setitem__() does. Look it up.
return self[key] return self[key]
def setlistdefault(self, key, default_list=None): def setlistdefault(self, key, default_list=None):
@ -347,7 +348,8 @@ class MultiValueDict(dict):
if default_list is None: if default_list is None:
default_list = [] default_list = []
self.setlist(key, default_list) self.setlist(key, default_list)
return default_list # Do not return default_list here because setlist() may store
# another value -- QueryDict.setlist() does. Look it up.
return self.getlist(key) return self.getlist(key)
def appendlist(self, key, value): def appendlist(self, key, value):