Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
TypeError Object id is not JSON serializable

I have a Django view that is raising an error when the template tries to render:

TypeError: is not JSON serializable

(Where 76 is the id field) Here is the view

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)

Here's my model for 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})

EDIT: Traceback ->

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

thanks

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

The error is because you are trying to save a model instance in the session, and the session middleware cannot serialize it to JSON.

request.session['content'] = model1object

It may be enough to store the id of the object instead of the object itself.

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

If you need to store more information in the session than the id, then you'll have to convert it to a format that is JSON serializable. For a simple model, it might be easiest to create a Python dict.

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

For more complicated models, you could look at the docs on serializing Django objects.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda