Я пытаюсь получить последний объект модели 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]