python – Django BigInteger自动增量字段为主键?

我正在建设一个涉及很多集体智慧的项目。访问网站的每个用户都创建了一个唯一的配置文件,并且他们的数据后来被用于为自己和其他用户计算最佳匹配。

默认情况下,Django创建一个INT(11)id字段来处理模型主键。我很担心这是非常快速溢出的(即〜2.4b的设备访问页面,没有预先的cookie设置)。如何在MySQL和long()Django本身中更改为BIGINT?

我发现我可以做以下(http://docs.djangoproject.com/en/dev/ref/models/fields/#bigintegerfield):

class MyProfile(models.Model):
    id = BigIntegerField(primary_key=True)

但是有没有办法使其自动增量,像通常的id字段?此外,我可以让它无符号,以便我有更多的空间填写?

谢谢!

NOTE: This answer as modified, according to Larry’s code. Previous solution extended fields.BigIntegerField, but better to extend fields.AutoField

我有同样的问题,并解决了以下代码:

from django.db.models import fields
from south.modelsinspector import add_introspection_rules

class BigAutoField(fields.AutoField):
    def db_type(self, connection):
        if 'mysql' in connection.__class__.__module__:
            return 'bigint AUTO_INCREMENT'
        return super(BigAutoField, self).db_type(connection)

add_introspection_rules([], ["^MYAPP\.fields\.BigAutoField"])

显然这对南迁是正常的。

http://stackoverflow.com/questions/2672975/django-biginteger-auto-increment-field-as-primary-key

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:python – Django BigInteger自动增量字段为主键?