Límite entero de django id

¿Hay un límite para el campo automático en un modelo de Django o en el back-end de la base de datos?

El proyecto Django en el que estoy trabajando podría potencialmente ver muchos objetos en ciertas tablas de bases de datos que podrían superar los 40000 en un corto período de tiempo.

Estoy usando Sqlite para dev y Postgresql para producción.

Añadiendo esto como respuesta. Django asigna esto a columnas seriales, lo que significa que el valor máximo está en el rango de 2 mil millones (2,147,483,647 para ser exactos). Si bien es poco probable que esto sea un problema para la mayoría de las aplicaciones, si lo hace, podría alterar el tipo para que se convierta en un bigint y esto haría que sea altamente improbable que alguna vez llegue al final del espacio int de 64 bits.

Añadiendo nueva información para Django 2.x :


Djangos AutoField es un IntegerField . Los documentos para IntegerField dicen:

Los valores de -2.147.483.648 a 2.147.483.647 están seguros en todas las bases de datos compatibles con Django.

AutoField por defecto solo usa números positivos, por lo que los valores pueden ir de 1 a 2.147.483.647 .


Desde Django 1.10 también hay un BigAutoField , que es muy similar al BigIntegerField . Los documentos para BigAutoField dicen:

Un entero de 64 bits que se garantiza que […] se ajuste a los números del 1 al 9.223.372.036.854.775.807 .

Ahora, los documentos no lo dicen explícitamente para este campo, pero al usar las palabras is garanteed to fit , asumo que se aplica a todas las bases de datos compatibles con Django.

Como otros han mencionado si usas int o bigint , respectivamente tienes valores de 2.147.483.648 o 9.223.372.036.854.775.808 .

Si piensas sobrepasar esos números, puedes hacer sharding. En resumen, sharding es una forma de particionar horizontalmente tus datos almacenando diferentes filas de la misma tabla en varias tablas en múltiples bases de datos.

Hay disponibles muchas bibliotecas de fragmentación para Django (por ejemplo, django-sharding )