【发布时间】:2012-03-12 19:10:48
【问题描述】:
我在模型上声明了一个 IntegerField,如下所示:
amount = models.IntegerField()
访问它时,它有时会返回一个字符串。造成这种情况的直接原因是它分配了一个字符串。到目前为止,如此不神秘。即使保存后它也会返回一个字符串。
这让我有点惊讶:如果 IntegerField 在赋值时(或最迟在保存时)将其值强制转换为整数,那就太好了,这样用户就可以依赖它是一个整数。
(我的应用程序使用 sqlite。)
有没有办法让 IntegerField 只返回整数?还是我必须创建一个自定义字段才能执行此操作?
【问题讨论】:
-
尝试再次从数据库中拉取对象,然后查看它是否为 int。如果我记得,进入数据库,Django 的 ORM 将对对象调用 repr() - 这就是为什么它看起来正常保存的原因。
-
@NathanHoad:谢谢。我会尝试,但并不完全令人满意:(
-
投反对票的人:愿意暴露自己吗?
-
@Marcin 是的,发生这种事情时有点烦人。最快的解决方法是找到字符串的来源并将其转换为 int - 对我而言,这表明验证中早先出现了一些问题,应该解决这个问题。
-
@NathanHoad:同意,而且我确实是这样解决的。
标签: python django django-models django-orm