Estou tentando obter o objeto de modelo Django mais recente, mas não consigo ter sucesso.
Nenhum deles está funcionando:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Estou tentando obter o objeto de modelo Django mais recente, mas não consigo ter sucesso.
Nenhum deles está funcionando:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Espero que ajude.
Respostas:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Veja os documentos de django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Você precisa especificar um campo em latest (). por exemplo.
obj= Model.objects.filter(testfield=12).latest('testfield')
Ou se o Meta do seu modelo especifica get_latest_by, você pode deixar de fora o field_name
argumento para earliest() or latest()
. Django usará o campo especificado get_latest_by
por padrão.
Último Usign ():
ModelName.objects.last()
usando o mais recente ():
ModelName.objects.latest('id')
latest
é realmente projetado para funcionar com campos de data (provavelmente também funciona com outros tipos de ordem total, mas não tenho certeza). E a única maneira de usá-lo sem especificar o nome do campo é definindo o get_latest_by
metaatributo, conforme mencionado aqui .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
é a solução certa
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]