Estoy tratando de obtener el último objeto de modelo de Django pero parece que no puedo tener éxito.
Ninguno de estos funciona:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Estoy tratando de obtener el último objeto de modelo de Django pero parece que no puedo tener éxito.
Ninguno de estos funciona:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Espero eso ayude.
Respuestas:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Vea los documentos de django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Debe especificar un campo en latest (). p.ej.
obj= Model.objects.filter(testfield=12).latest('testfield')
O si el Meta de su modelo especifica get_latest_by, puede dejar el field_name
argumento a earliest() or latest()
. Django usará el campo especificado en get_latest_by
por defecto.
latest
está realmente diseñado para trabajar con campos de fecha (probablemente también funcione con otros tipos de orden total, pero no estoy seguro). Y la única forma en que puede usarlo sin especificar el nombre del campo es configurando el get_latest_by
meta atributo, como se menciona aquí .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
es la solucion correcta
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]