Я пытаюсь получить последний объект модели Django, но мне это не удается.
Ни один из них не работает:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
Я пытаюсь получить последний объект модели Django, но мне это не удается.
Ни один из них не работает:
obj = Model.objects.filter(testfield=12).latest()
obj = Model.objects.latest().filter(testfield=12)
NewsPostImage.objects.filter(newsPostTarget=img_id).first()
. Надеюсь, это поможет.
Ответы:
obj= Model.objects.filter(testfield=12).order_by('-id')[0]
См. Документы от django: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest
Вам нужно указать поле в latest (). например.
obj= Model.objects.filter(testfield=12).latest('testfield')
Или, если Meta вашей модели указывает get_latest_by, вы можете оставить field_name
аргумент для earliest() or latest()
. Django будет использовать поле, указанное get_latest_by
по умолчанию.
Использовать последний ():
ModelName.objects.last()
используя latest ():
ModelName.objects.latest('id')
latest
действительно предназначен для работы с полями даты (вероятно, он работает и с другими полностью упорядоченными типами, но не уверен). И единственный способ использовать его без указания имени поля - это установить get_latest_by
атрибут meta, как упоминалось здесь .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]
правильное решение
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]