Я намагаюся отримати найновіший об'єкт моделі 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]