Django IntegerField返回字符串(!) - 如何强制转换为int?

Mar*_*cin 3 python django django-models django-orm

我在模型上有一个如下所示的IntegerField:

amount = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

访问它时,它有时会返回一个字符串.造成这种情况的最直接原因是它已经为其分配了一个字符串.到目前为止,如此愚蠢.它甚至在保存后也会返回一个字符串.

这让我感到有些惊讶:如果IntegerField在赋值时将其值强制转换为整数(或者,最迟在保存时),那将是很好的,因此用户可以依赖它作为整数.

(我的应用程序使用sqlite.)

有没有办法让IntegerField只返回整数?或者我是否必须创建自定义字段才能执行此操作?

小智 9

正如我的评论中所提到的,发生这种情况的原因是Django在保存时对字段执行相关强制,但不反映原始模型上的值更改,因为如果不再次查询数据库就无法完成.

对于这类问题,最快的解决方法(也是最简单的)是查找字符串的来源并将其转换为int - 对我而言,这表明在验证中早先出现了一些错误,应该选择这个问题. .