Я намагаюся отримати найновіший об'єкт моделі 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
Вам потрібно вказати поле в останній (). напр.
obj= Model.objects.filter(testfield=12).latest('testfield')
Або якщо мета вашої моделі визначає get_latest_by, ви можете залишити field_nameаргумент до earliest() or latest(). Django використовуватиме поле, вказане get_latest_byза замовчуванням.
Usign останній ():
ModelName.objects.last()
використовуючи останню ():
ModelName.objects.latest('id')
latestнасправді розроблений для роботи з полями дати (можливо, він працює і з іншими загальновпорядкованими типами, але не впевнений). І єдиний спосіб, яким ви можете використовувати його без зазначення назви поля, - це встановити get_latest_byмета-атрибут, як згадано тут .
Model.objects.latest('id')
obj= Model.objects.filter(testfield=12).order_by('-id')[:1] є правильним рішенням
obj= Model.objects.filter(testfield=12).order_by('-id')[:1]