BigAutoField es un número entero de 64 bits, muy parecido a un AutoField, excepto que se garantiza que se ajusta a números del 1 al 9223372036854775807 . Uno puede crear un BigAutoField usando la siguiente sintaxis,
id = models.BigAutoField(primary_key=True, **options)
Esta es una clave primaria de incremento automático al igual que AutoField.
Django Modelo BigAutoField Explicación
Ilustración de BigAutoField utilizando un ejemplo. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks.
Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django.
Ingrese el siguiente código en el archivo models.py de la aplicación geeks .
Python3
from django.db import models from django.db.models import Model # Create your models here. class GeeksModel(Model): big_id = models.BigAutoField(primary_key = True)
Agregue la aplicación geeks a INSTALLED_APPS
Python3
# Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'geeks', ]
Ahora, cuando ejecutamos el comando makemigrations desde la terminal,
Python manage.py makemigrations
Se crearía una nueva carpeta llamada migraciones en el directorio geeks con un archivo llamado 0001_initial.py
Python3
# Generated by Django 2.2.5 on 2019-09-25 06:00 from django.db import migrations, models class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name ='GeeksModel', fields =[ ('big_id', models.BigAutoField(auto_created = True, primary_key = True, serialize = False, verbose_name ='ID' )), ], ), ]
Por lo tanto, se crea un big_id BigAutoField que se incrementa automáticamente en cada instancia de ese modelo cuando ejecuta makemigrations en el proyecto. Es una clave principal para la tabla creada para el modelo denominado GeeksModel.
Posible error
ya que un modelo de Django puede tener como máximo un campo automático, BigAutoField debe crearse en la primera migración con el atributo primary_key=True; de lo contrario, generará múltiples errores.
«AssertionError: un modelo no puede tener más de un AutoField».
Si recibe este error, intente eliminar las migraciones recientes y agregue primary_key=True al campo. Vuelva a ejecutar Migraciones para resolver el problema.
Si creamos objetos de este modelo vacío desde el servidor de administración. podemos ver el campo de identificación autoincrementándose en cada instancia creada.
Opciones de campo
Las opciones de campo son los argumentos dados a cada campo para aplicar alguna restricción o impartir una característica particular a un campo en particular. Por ejemplo, agregar un argumento clave_principal=True a BigAutoField lo convertirá en la clave principal para esa tabla en una base de datos relacional.
Estas son las opciones y los atributos que puede usar un BigAutofield.
Opciones de campo | Descripción |
---|---|
Nulo | Si es True , Django almacenará valores vacíos como NULL en la base de datos. El valor predeterminado es Falso . |
Vacío | Si es True , el campo puede estar en blanco. El valor predeterminado es Falso . |
índice_db | Si es Verdadero, se creará un índice de base de datos para este campo. |
db_tablespace | El nombre del tablespace de la base de datos que se usará para el índice de este campo si este campo está indexado. El valor predeterminado es la configuración DEFAULT_INDEX_TABLESPACE del proyecto, si está establecida, o el db_tablespace del modelo, si lo hay. Si el backend no admite espacios de tabla para índices, esta opción se ignora. |
columna_db | El nombre de la columna de la base de datos que se usará para este campo. Si no se proporciona, Django usará el nombre del campo. |
Defecto | El valor predeterminado para el campo. Puede ser un valor o un objeto invocable. Si es invocable, se llamará cada vez que se cree un nuevo objeto. |
texto de ayuda | Texto adicional de «ayuda» que se mostrará con el widget de formulario. Es útil para la documentación incluso si su campo no se usa en un formulario. |
Clave primaria | Si es Verdadero, este campo es la clave principal para el modelo. |
editable | Si es False , el campo no se mostrará en el administrador ni en ningún otro ModelForm. También se omiten durante la validación del modelo. El valor predeterminado es Verdadero . |
error de mensajes | El argumento error_messages le permite anular los mensajes predeterminados que generará el campo. Pase un diccionario con claves que coincidan con los mensajes de error que desea anular. |
texto de ayuda | Texto adicional de «ayuda» que se mostrará con el widget de formulario. Es útil para la documentación incluso si su campo no se usa en un formulario. |
nombre_verbose | Un nombre legible por humanos para el campo. Si no se proporciona el nombre detallado, Django lo creará automáticamente utilizando el nombre del atributo del campo, convirtiendo los guiones bajos en espacios. |
validadores | Una lista de validadores para ejecutar para este campo. Consulte la documentación de los validadores para obtener más información. |
Único | Si es Verdadero, este campo debe ser único en toda la tabla. |
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA