Próbuję uzyskać najnowszy obiekt modelu Django, ale nie wydaje mi się, aby mi się udało.
Żadne z nich nie działa:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Próbuję uzyskać najnowszy obiekt modelu Django, ale nie wydaje mi się, aby mi się udało.
Żadne z nich nie działa:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Mam nadzieję, że to pomoże.
Odpowiedzi:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
Zobacz dokumentację z django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Musisz określić pole w najnowszej (). na przykład.
obj= Model.objects.filter(testfield=12).latest('testfield')
Lub jeśli Meta twojego modelu określa get_latest_by, możesz zostawić field_name
argument na earliest() or latest()
. Django get_latest_by
domyślnie użyje pola określonego w .
Użyj ostatniego ():
ModelName.objects.last()
przy użyciu najnowszych ():
ModelName.objects.latest('id')
latest
jest naprawdę zaprojektowany do pracy z polami daty (prawdopodobnie działa również z innymi typami uporządkowanymi łącznie, ale nie jestem pewien). Jedynym sposobem, w jaki możesz go używać bez określania nazwy pola, jest ustawienie get_latest_by
atrybutu meta, jak wspomniano tutaj .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
to właściwe rozwiązanie
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]