Ir al contenido principal

Argumentos y tipos de campos

Campos

Un modelo puede tener un número arbitrario de campos, de cualquier tipo. Cada uno representa una columna de datos que queremos guardar en nuestras tablas de la base de datos. Cada registro de la base de datos (fila) consistirá en uno de cada posible valor del campo. Echemos un vistazo al ejemplo visto arriba:
my_field_name = models.CharField(max_length=20, help_text="Enter field documentation")
Nuestro ejemplo de arriba tiene un único campo llamado my_field_name, de tipo models.CharField — lo que significa que este campo contendrá una cadena de caracteres alfanuméricos. Los tipos de campo son asignados usando clases específicas, que determinan el tipo de registro que se usa para guardar el dato en la base, junto con un criterio de evaluación que se usará cuando se reciban los valores de un formulario HTML (es decir, qué constituye un valor válido). Los tipos de campo pueden también tomar argumentos que especifican además cómo se guarda o cómo se puede usar. En este caso le damos a nuestro campo dos argumentos:
  • max_length=20 — Establece que la longitud máxima del valor de este campo es 20 caracteres.
  • help_text="Enter field documentation" — proporciona una etiqueta de texto para mostrar que ayuda a los usuarios a saber qué valor proporcionar cuando un usuario ha de introducirlo via un formulario HTML.
El nombre del campo se usa para referirnos a él en consultas (queries) y plantillas (templates). Los campos también tienen una etiqueta, que puede ser especificada como argumento (verbose_name) o inferida automáticamente, a partir del nombre de variable que identifica al campo, capitalizando la primera letra y reemplazando los guiones bajos por espacios (por ejemplo my_field_name tendría la etiqueta por defecto de My field name). El orden en que los campos son declarados afectará su orden por defecto si un modelo es renderizado en un formulario (ej. en el sitio de Administración), aunque este comportamiento se puede anular.
Argumentos comunes de los campos
Los siguientes argumentos son comunes a la mayoría de los tipos de campo y pueden usarse al declararlos:
  • help_text: Proporciona una etiqueta de texto para formularios HTML (ej. en el sitio de Administración), tal como se describe arriba.
  • verbose_name: Nombre de fácil lectura que se usa en etiquetas para el campo. Si no se especifica, Django inferirá el valor por defecto del verbose name a partir del nombre del campo.
  • default: Valor por defecto para el campo. Puede ser un valor o un callable object(objeto que puede ser llamado como una función), en cuyo caso el objeto será llamado cada vez que se cree un nuevo registro.
  • null: Si es True, Django guardará valores en blanco o vacíos como NULL en la base de datos para campos donde sea apropiado (un CharField guardará una cadena vacía en su lugar). Por defecto es False.
  • blank: Si es True, se permite que el campo quede en blanco en tus formularios. El valor por defecto es False, lo que significa que la validación de formularios de Django te forzará a introducir un valor. Con frecuencia se usa con null=True, porque si vas a permitir valores en blanco, también querrás que la base de datos sea capaz de representarlos de forma apropiada.
  • choices: Un grupo de valores de selección para este campo. Si se proporciona, el widget correspondiente por defecto del formulario será una caja de selección con estos valores de selección en vez del campo de texto estándar.
  • primary_key: Si es True, establece el campo actual como clave primaria para el modelo (Una clave primaria es una columna especial de la base de datos, diseñada para identificar de forma única todos los diferentes registros de una tabla). Si no se especifica ningún campo como clave primaria, Django añadirá automáticamente un campo para este propósito.
Hay muchas otras opciones — puedes ver la lista completa de opciones aquí.
Tipos comunes de campos
La lista siguiente describe algunos de los tipos de campo más comunmente usados. 
  • CharField se usa para definir cadenas de longitud corta a media. Debes especificar la max_length (longitud máxima) de los datos que se guardarán.
  • TextField se usa para cadenas de longitud grande o arbitraria. Puedes especificar una max_length para el campo, pero sólo se usa cuando el campo se muestra en formularios (no se fuerza al nivel de la base de datos).
  • IntegerField es un campo para almacenar valores de números enteros y para validar los valores introducidos como enteros en los formularios.
  • DateField y DateTimeField se usan para guardar/representar fechas e información fecha/hora (como en los objetos Python datetime.date  y datetime.datetime, respectivamente). Estos campos pueden adicionalmente declarar los parámetros (mutuamente excluyentes) auto_now=True (para establecer el campo a la fecha actual cada vez que se guarda el modelo), auto_now_add (para establecer sólo la fecha cuando se crea el modelo por primera vez), y default (para establecer una fecha por defecto que puede ser sobreescrita por el usuario).
  • EmailField se usa para validar direcciones de correo electrónico.
  • FileField e ImageField se usan para subir ficheros e imágenes respectivamente (el ImageField añade simplemente una validación adicional de que el fichero subido es una imagen). Éstos tienen parámetros para definir cómo y donde se guardan los ficheros subidos.
  • AutoField es un tipo especial de IntegerField que se incrementa automáticamente. Cuando no especificas una clave primaria para tu modelo, se añade -automáticamente- una de éste tipo.
  • ForeignKey se usa para especificar una relación uno a muchos con otro modelo de la base de datos (ej. un coche tiene un fabricante, pero un fabricante puede hacer muchos coches). El lado "uno" de la relación es el modelo que contiene la clave.
  • ManyToManyField se usa para especificar una relación muchos a muchos (ej. un libro puede tener varios géneros, y cada género puede contener varios libros). En nuestra aplicación de la biblioteca usaremos ésta de forma muy similar a ForeignKeys, pero pueden usarse de formas más complicadas para describir las relaciones entre grupos. Éstas tienen el parámetro on_delete para definir que ocurre cuando un registro asociado se borra (ej. un valor de models.SET_NULL establecería simplemente el valor a NULL).
Hay muchos otros tipos de campos, incluyendo campos para diferentes tipos de números (enteros grandes, enteros pequeños, en coma flotante), boleanos, URLs, slugs, identificadores únicos, y otra información relacionada con el tiempo (duración, hora, etc..). Puedes ver la lista completa aquí.

Comentarios

Entradas más populares de este blog

1.3. Consideraciones para elegir un buen DBMS

Para escoger un buen DBMS se necesitan tomar en cuenta algunas consideraciones ya que en el mercado existen muchos manejadores de bases de datos. Para elegir tomaremos: Números de Usuarios,Número de Transacciones.,Cantidad de Datos para almacenar.,Consistencia de la información Experiencia Propia o Externa. También podemos hacernos las siguientes preguntas: Está comprobado que SGBD diseñados en OpenSource (Código abierto) corren mucho más rápido en entornos operativos basados en UNIX que sobre Windows, así que aquí debería de tenerse en cuenta el sistema operativo, si no se ha tomado la decisión entonces elegir el sistema operativo del servidor dependiendo del SGBD, en foros como los de PosgreSQL, por ejemplo, la gente que ha realizado pruebas de este SGBD indican que se tiene un 25% de optimización corriendo sobre LINUX que sobre Windows. Si no se tiene un sistema operativo en el servidor sería recomendable elegirlo en base al SGBD y esto también tendría consideraciones como la operat...

2.1.1 Estructura de memoria y procesos de la instancia

2.1.1 Estructura de memoria y procesos de la instancia DBMS Definición Es un sistema robusto que es capaz de emplear algoritmos de almacenamiento y recuperación de información para poder implementar un modelo de datos de manera física garantizando que todas las transacciones que se realizan con respecto a dichos datos sean "ácidas" (Atomicity, Consistency, Isolation, Duration). Para que un DBMS pueda funcionar, primero se debe hacer una instancia de este. Esta instancia está compuesta principalmente de tres componentes: · Archivos · Estructuras de memoria. · Estructuras de procesos. Cada una de estas estructuras se puede dividir a su vez en diferentes puntos. Archivos · Control (ctl): almacenan información acerca de la estructura de archivos de la base. · Rollback (rbs): cuando se modifica el valor de alguna tupla en una transacción, los valores nuevos y anteriores se almacenan en un archivo, de modo que si ocurre algún error, se pued...

1.1.2 RELACIÓN DEL DBA CON OTRAS ÁREAS DE LOS SISTEMAS

1.1.2 RELACIÓN DEL DBA CON OTRAS ÁREAS DE LOS SISTEMAS La función del DBA requiere personal para cubrir las siguientes actividades: Planeación de la BD, incluida la definición de estándares, procedimientos y ejecución. Recolección de requerimientos y diseño conceptual de la base de datos. Diseño lógico de BD y diseño de transacciones. Diseño físico y ejecución de la BD. Pruebas y depuración de la BD. Operación y mantenimiento de BD, incluida su instalación, conversión y migración.