Je ne peux pas modifier la liste d'un objet QueryDict mutable:

copy_GET = QueryDict('a=1&a=2&a=3', mutable=True)
l = copy_GET.getlist('a')
l
[u'1', u'2', u'3']

l.append(u'4') # add a new value to the list
copy_GET.getlist('a') # but list is not modified
[u'1', u'2', u'3']

copy_GET # query dict is not modified
<QueryDict: {u'a': [u'1', u'2', u'3']}>
1
Luis Sobrecueva 16 avril 2018 à 12:44

3 réponses

Meilleure réponse

Si vous regardez l'implémentation de { {X0}}, vous pouvez voir qu'il crée une nouvelle liste à chaque appel. La modification de la liste ne modifiera pas le dict de la requête.

Vous pouvez utiliser setlist pour définir la clé sur la liste mise à jour.

copy_GET = QueryDict('a=1&a=2&a=3', mutable=True)
l = copy_GET.getlist('a')
l.append(u'4')
copy_GET.setlist('a', l)
2
Alasdair 16 avril 2018 à 10:17

Nous pouvons le convertir en une instance QueryDict mutable en le copiant:

request.GET = request.GET.copy()
# update querydict like
request.GET['hi'] = 'hello'
0
anjaneyulubatta505 16 avril 2018 à 09:50

Je rencontre ce problème, et ma solution est:

mutable = query_params._mutable  # get out of the initial mutable
query_params._mutable = True
ip_list = query_params.pop('ip')
query_params._mutable = mutable # set the initial mutable 
0
aircraft 24 mai 2018 à 06:53