代码之家  ›  专栏  ›  技术社区  ›  ayaz

Django模型中的大整数字段

  •  11
  • ayaz  · 技术社区  · 16 年前

    简而言之:如何在django模型中指定bigint?

    在我正在使用django(0.97-svn版本)执行的当前项目中,所有模型中的整型字段都定义为integerfield。在我使用sqlite作为DB后端的开发周期中,它工作得非常完美。然而,当我开始使用MySQL时,我注意到对于其中一个integerfields,MySQL正在截断数据——显然,出于我还不知道的原因,sqlite没有抱怨。我查看了模式,发现Django中的integerfield在MySQL中表示为int(11)字段。当然,MySQL截断数据的原因是数据的长度超过了11位。为了解决这个问题,我必须手动将列更新为,在本例中,是一个bigint(20)。Django和MySQL与之和平共处。但是,每当我重置应用程序(其中驻留了包含该bigint的模型)时,Django再次将其创建为int(11)。我看过姜戈医生,没有发现任何东西。我忽略了什么吗?

    谢谢。

    3 回复  |  直到 11 年前
        1
  •  5
  •   Javier    16 年前

    sqlite不会抱怨的 曾经 . 它使用“清单类型”,即值具有类型,而不是列。它允许您将bigtext存储在一个小列上,或者您想要的任何内容!(除非定义整数主键,其中使用64位整数)。

    这是一个非常方便的特性,但是如果您要使用不同的引擎部署,它会使SQLite成为不好的开发选择。

    为了使用bigint,您必须创建一个自定义字段类。不幸的是,Django1.0上的这一部分已经改变了,所以如果/当你更新时,你必须重写它。

        2
  •  27
  •   Samuel Katz Jon Skeet    11 年前

    BigIntegerField 在ChangeSet 11887、2009-12-17 09:10:38中添加,是Django 1.2和更新版本的一部分。

        3
  •  0
  •   Davide Muzzarelli    15 年前

    试试德米马尔菲尔德。