La parte más importante de un modelo y la única parte requerida de un modelo es la lista de campos de base de datos que define. Los campos se especifican mediante atributos de clase. Tenga cuidado de no elegir nombres de campo que entren en conflicto con la API de modelos, como limpiar, guardar o eliminar.
Ejemplo:
from django.db import models class Musician(models.Model): first_name = models.CharField(max_length=200) last_name = models.CharField(max_length=200) instrument = models.CharField(max_length=200) class Album(models.Model): artist = models.ForeignKey(Musician, on_delete=models.CASCADE) name = models.CharField(max_length=100) release_date = models.DateField() num_stars = models.IntegerField()
Establecer un campo para almacenar cualquier tipo de datos es como decidir un tipo de datos en C/C++ para almacenar un número entero, carácter, etc. en particular. Los campos en Django son los tipos de datos para almacenar un tipo particular de datos. Por ejemplo, para almacenar un número entero, se usaría IntegerField. Estos campos tienen una validación incorporada para un tipo de datos en particular, es decir, no puede almacenar «abc» en un IntegerField. Del mismo modo, para otros campos. Esta publicación gira en torno a los principales campos que se pueden usar en Django Models.
Aquí hay algunos atributos clave que uno debe tener en cuenta antes de comenzar a usar Django Fields.
tipos de campo
Cada campo del modelo debe ser una instancia de la clase Field adecuada. Django usa tipos de clase de campo para determinar algunas cosas:
- El tipo de columna, que le dice a la base de datos qué tipo de datos almacenar (por ejemplo, INTEGER, VARCHAR, TEXT).
- El widget HTML predeterminado que se utilizará al representar un campo de formulario (p. ej., <tipo de entrada=”texto”>, <seleccionar>).
- Los requisitos mínimos de validación, utilizados en la administración de Django y en formularios generados automáticamente.
Django se envía con docenas de tipos de campos incorporados que también se pueden usar para guardar cualquier tipo de datos, desde números hasta archivos HTML completos. Aquí hay una lista de todos los tipos de campo usados en Django.
Lista de campos y tipos de datos del modelo básico
Nombre del campo | Descripción |
---|---|
Campo automático | Es un IntegerField que se incrementa automáticamente. |
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. |
BigIntegerField | Es un número entero de 64 bits, muy parecido a un IntegerField excepto que se garantiza que se ajusta a números desde -9223372036854775808 hasta 9223372036854775807. |
BinaryField | Un campo para almacenar datos binarios sin procesar. |
campo booleano | Un campo verdadero/falso. El widget de formulario predeterminado para este campo es CheckboxInput. |
CharField | Un campo para almacenar valores basados en texto. |
campo de fecha | Una fecha, representada en Python por una instancia datetime.date |
Campo de fecha y hora | Se usa para la fecha y la hora, representada en Python por una instancia de datetime.datetime. |
campo decimal | Es un número decimal de precisión fija, representado en Python por una instancia Decimal. |
DuraciónCampo | Un campo para almacenar períodos de tiempo. |
Campo de correo electrónico | Es un CharField que verifica que el valor sea una dirección de correo electrónico válida. |
campo de archivo | Es un campo de carga de archivos. |
campo flotante | Es un número de punto flotante representado en Python por una instancia flotante. |
campo de imagen | Hereda todos los atributos y métodos de FileField, pero también valida que el objeto cargado sea una imagen válida. |
CampoEntero | Es un campo entero. Los valores de -2147483648 a 2147483647 son seguros en todas las bases de datos compatibles con Django. |
Campo de dirección IP genérico | Una dirección IPv4 o IPv6, en formato de string (por ejemplo, 192.0.2.30 o 2a02:42fe::4). |
NullBooleanField | Como BooleanField, pero permite NULL como una de las opciones. |
CampoEnteroPositivo | Como un IntegerField, pero debe ser positivo o cero (0). |
CampoEnteroPequeñoPositivo | Como un PositiveIntegerField, pero solo permite valores bajo un cierto punto (dependiente de la base de datos). |
campo de babosas | Slug es un término periodístico. Un slug es una etiqueta corta para algo, que contiene solo letras, números, guiones bajos o guiones. Por lo general, se utilizan en las URL. |
SmallIntegerField | Es como un IntegerField, pero solo permite valores bajo un cierto punto (dependiente de la base de datos). |
Campo de texto | Un campo de texto grande. El widget de formulario predeterminado para este campo es un área de texto. |
Campo de tiempo | Una hora, representada en Python por una instancia de datetime.time. |
campo URL | Un CharField para una URL, validado por URLValidator. |
campo UUIID | Un campo para almacenar identificadores únicos universales. Utiliza la clase UUID de Python. Cuando se usa en PostgreSQL, se almacena en un tipo de datos uuid; de lo contrario, en char(32). |
Campos de relación
Django también define un conjunto de campos que representan relaciones.
Nombre del campo | Descripción |
---|---|
Clave externa | Una relación de muchos a uno. Requiere dos argumentos posicionales: la clase con la que está relacionado el modelo y la opción on_delete. |
MuchosAMuchosCampo | Una relación de muchos a muchos. Requiere un argumento posicional: la clase con la que se relaciona el modelo, que funciona exactamente igual que para ForeignKey, incluidas las relaciones recursivas y perezosas. |
campo uno a uno | Una relación de uno a uno. Conceptualmente, esto es similar a ForeignKey con unique=True, pero el lado «inverso» de la relación devolverá directamente un único objeto. |
Publicación traducida automáticamente
Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA