Django IntegerField возвращает строку (!) - как привести к int? - PullRequest
3 голосов
/ 22 февраля 2012

У меня есть IntegerField, объявленный на модели следующим образом:

amount = models.IntegerField()

При обращении к нему иногда возвращается строка. Непосредственной причиной этого является то, что ему была назначена строка. Пока что так загадочно. Он также возвращает строку даже после ее сохранения.

Это удивляет меня: было бы неплохо, если бы IntegerField приводил его значение к целому числу при присваивании (или, самое позднее, к сохранению), чтобы пользователь мог полагаться на то, что оно является целым числом.

(Мое приложение использует sqlite.)

Есть ли способ заставить IntegerField возвращать только целые числа? Или мне нужно создать настраиваемое поле для этого?

1 Ответ

9 голосов
/ 22 февраля 2012

Как упоминалось в моем комментарии, причина, по которой это происходит, заключается в том, что Django выполняет соответствующие действия с полями при сохранении, но не отражает изменения значений в исходной модели, потому что это невозможно сделать без повторного запроса к базе данных.

Самое быстрое решение (и самое простое в долгосрочной перспективе) для такого рода проблем - найти источник строки и превратить его в int - для меня это будет означать, что ранее в проверке было что-то не так.это должно быть поднято.

...