Проблема в том, что ваш .last()
будет извлекать последний Settings
объект. Таким образом, вы вызовете .values('bb_bonus')
для объекта Settings
. Поскольку модель не имеет .values(..)
метода, она ничего не вернет.
Однако вы можете извлечь значение определенного столбца из набора запросов с помощью:
Settings.objects<b>.values_list('bb_bonus_qualify', flat=True)</b>.last()
Здесь мы, таким образом, используем .values_list(..)
[Django-doc] , это принимает имена столбцов в качестве параметров. Затем он обычно возвращает QuerySet
списков с этими значениями. Но если вы укажете один столбец; затем, как сказано в документации:
Если вы передаете только одно поле, вы также можете передать параметр flat
. Если True
, это будет означать, что возвращаемые результаты представляют собой одиночные значения , а не однократные.
Таким образом, это означает, что мы создаем QuerySet
единичных значений и затем извлекаем последнюю запись этого набора запросов. Обратите внимание, что мы не выбираем все элементы из набора запросов, .last()
«внедряется» в запрос, который мы выполняем в базе данных, поэтому результатом является скалярное значение этого столбца для последней записи .
Таким образом, .values_list(..)
необходимо выполнить до .last()
, так как в противном случае вы говорите с Settings
объектом, а не с QuerySet
.