Workaround para el bug 7233 de Django

El bug se describe en http://code.djangoproject.com/ticket/7233, pero básicamente consiste en la imposibilidad de guardar objetos de tipo QueryDict en una sesión. Los usuarios de Django suelen toparse con el problema al intentar guardar en la sesión el objeto request.POST, yo lo hago de esta forma:

request.session['POST'] = dict(request.POST.items())

No sirve si se tienen múltiples valores para una clave porque items devuelve para cada clave el último valor almacenado.

En este caso, se puede usar lists:

request.session['POST'] = dict(request.POST.lists())

About Juanjo

Mi nombre es Juanjo Conti, vivo en Santa Fe y soy Ingeniero en Sistemas de Información. Mi lenguaje de programación de cabecera es Python; lo uso para trabajar, estudiar y jugar. Como hobby escribí un libro de cuentos que se puede descargar gratuitamente.
This entry was posted in Django and tagged . Bookmark the permalink.
  • Juanjo

    OJo!, A veces hay que combinar estas cosas. Por ejemplo, si en POST viene el valor de un capo que admite múltiples valores, hay que combinar las dos alternativas. Este es un ejemplo sacado de código real:

    # Un dict a partir de un QueryDict
    d = dict(post_consulta.items())
    d['barrios'] = post_consulta.getlist('barrios')
    request.session['POST'] = d