当前位置:  开发笔记 > 后端 > 正文

django模型中的大整数字段

如何解决《django模型中的大整数字段》经验,为你挑选了2个好方法。

简而言之:如何在Django模型中指定BIGINT?

在当前项目中,我使用Django(0.97 SVN版本)这样做,我有所有的整数字段定义为IntegerField的所有车型.在我使用SQLite作为数据库后端的开发周期中,它正在完美地工作.但是,只要我下线到MySQL,我注意到,对于IntegerFields之一,MySQL的被截断的数据---显然,原因还不得而知给我时,SQLite没有抱怨.我查看了模式,发现Django中的IntegerField在MySQL中表示为INT(11)字段.当然,MySQL截断数据的原因是因为数据长度超过11位.要解决此问题,我必须手动更新列,在本例中为BIGINT(20).Django和MySQL和平共处.但每当我重置其中包含该BIGINT的模型的应用程序时,Django再次将其创建为INT(11).我看过Django文档,但没有找到任何东西.我忽略了什么吗?

谢谢.



1> kaleissin..:

BigIntegerField在变更集11887,2009-12-17 09:10:38中添加,是Django 1.2及更新版本的一部分.



2> Javier..:

SQLite的不会抱怨不断.它使用'manifest typing',即值具有类型,而不是列.它允许您将bigtext存储在smallint collumn上,或者您想要的任何内容!(除非您定义一个整数主键,它使用64位整数).

这是一个非常方便的功能,但是如果您要使用不同的引擎进行部署,它会使SQLite成为一个糟糕的选择.

要使用BIGINT,您必须创建自定义字段类.不幸的是,这部分已经在Django 1.0上发生了变化,因此如果/更新时你必须重写它.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有