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)
python
django
django-models
django-queryset
doniyor
źródło
źródło
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Mam nadzieję, że to pomoże.Odpowiedzi:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
źródło
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 naearliest() or latest()
. Djangoget_latest_by
domyślnie użyje pola określonego w .źródło
ostatnia () ostatnia ()
Użyj ostatniego ():
przy użyciu najnowszych ():
ModelName.objects.latest('id')
źródło
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 ustawienieget_latest_by
atrybutu meta, jak wspomniano tutaj .źródło
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
to właściwe rozwiązanieźródło