Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

294
Vistas
TypeError Object id no es JSON serializable

Tengo una vista de Django que genera un error cuando la plantilla intenta renderizarse:

TypeError: no es JSON serializable

(Donde 76 es el campo de identificación) Aquí está la vista

 def view2(request, model1object_id): model1object = Model1.objects.get(pk=model1object_id) # HERE session_object = request.session.get('content') if session_object: del request.session['content'] request.session['content'] = model1object context = { "model1object": model1object, .... } return render(request, 'app/template2.html', context)

Aquí está mi modelo para Model1:

 class Model1(models.Model): date_field = models.DateField() another_field = models.CharField(max_length= 50, default="...") def __str__(self): return unicode(self.id) or u'' def get_absolute_url(self): return reverse('app:model1', kwargs={'id': self.id})

EDITAR: Rastreo ->

 Traceback (most recent call last): File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 235, in get_response response = middleware_method(request, response) File "/Library/Python/2.7/site-packages/django/contrib/sessions/middleware.py", line 50, in process_response request.session.save() File "/Library/Python/2.7/site-packages/django/contrib/sessions/backends/db.py", line 82, in save obj = self.create_model_instance(data) File "/Library/Python/2.7/site-packages/django/contrib/sessions/backends/db.py", line 68, in create_model_instance session_data=self.encode(data), File "/Library/Python/2.7/site-packages/django/contrib/sessions/backends/base.py", line 91, in encode serialized = self.serializer().dumps(session_dict) File "/Library/Python/2.7/site-packages/django/core/signing.py", line 95, in dumps return json.dumps(obj, separators=(',', ':')).encode('latin-1') File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 250, in dumps sort_keys=sort_keys, **kw).encode(obj) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 207, in encode chunks = self.iterencode(o, _one_shot=True) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 270, in iterencode return _iterencode(o, 0) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/encoder.py", line 184, in default raise TypeError(repr(o) + " is not JSON serializable") TypeError: <Model1: 76> is not JSON serializable

Gracias

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El error se debe a que está intentando guardar una instancia de modelo en la sesión y el middleware de la sesión no puede serializarla en JSON.

 request.session['content'] = model1object

Puede ser suficiente almacenar la identificación del objeto en lugar del objeto en sí.

 request.session['content_id'] = model1object.id ... # retrieve from db later model1object = Model1.objects.get(id=request.session['content_id'])

Si necesita almacenar más información en la sesión que la identificación, tendrá que convertirla a un formato que sea JSON serializable. Para un modelo simple, podría ser más fácil crear un dict de Python.

 request.session['content'] = { 'id': model1object.id, 'name': model1object.name, ... }

Para modelos más complicados, puede consultar los documentos sobre la serialización de objetos Django .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda