Cargando



Django - Definición de Campos

En este tutorial veremos las clases necesarias para la definición de campos dentro de los modelos en Django.


feb 23 2014 07:39
Avanzado
feb 26 2014 21:33
Una vez que tenemos una clase modelo debemos llenarla con los diferentes campos que vamos a desear manejar dentro de ella, para esto seguramente ya tenemos nuestra definición de que llevará en base de datos, como debe comportarse cada uno, etc. Luego tenemos que hacer que esto se exprese en nuestra aplicación.

Para definir los campos tenemos una clase Fields que se encuentra en models, esta es la que nos permite indicar el tipo de campo que será el que coloquemos en nuestra clase modelo.

Definición de campos

Al manipular los modelos, Django se encuentra con el reto de localizar y utilizar los campos definidos en dichos modelos, para ello cuando se crea un modelo y se le agregan los diferentes campos, se lleva un registro o traza del orden en que fueron creados, esto gracias a la cuenta de creación de atributos.

Una vez que Django identifica los campos, estos son almacenados en una lista en el atributo fields que pertenece al atributo _meta de la clase modelo generada.

Gracias a lo anteriormente descrito Django puede hacer una iteración sobre dicha lista para poder obtener la información que requiera de los diferentes campos, con dicha información Django puede construir los formularios y las diferentes salidas que requieran las plantillas.

Veamos el siguiente código que nos permite iterar y obtener todos los campos de los diferentes modelos de un proyecto sin necesidad de especificar un modelo en particular:

from django.utils.text import capfirst
def get_values(instance):
for field in instance._meta.fields:
	 name = capfirst(field.verbose_name)
	 value = getattr(instance, field.name)
	 print('%s: %s' % (name, value))


Como vemos, utilizamos la clase _meta dentro de la cual ya sabemos que se almacena la lista de campos definidos en el atributo fields.

Llaves primarias

Un punto que debemos tratar es el de las llaves primarias, como sabemos estos modelos son representaciones de estructuras que van en nuestra base de datos, como cada registro debe ser único debemos definir una llave primaria, es decir, un código o identificador único que nos permita saber cuál es cada registro.

En programación web usualmente la llave primaria es un campo auto numérico en el que se almacena un numero correlativo con cada registro insertado.

Para manejar esto Django genera dicho campo automáticamente al generar un modelo y no especificar una llave primaria.

Crear un modelo y obtener las definiciones

Ya que sabemos la teoría detrás de los campos dentro de un modelo de Django vamos a ver como creamos uno con varios campos y luego ver cómo obtener sus definiciones.

En la siguiente imagen tenemos el modelo Products creado:

django_defcampos.jpg


Cada campo lo definimos como una instancia de models utilizando fields y sus atributos, por ejemplo el campo sku le decimos que es models.CharField es decir, es un campo de caracteres alfanuméricos, dentro especificamos su longitud máxima y el verbose name que es el nombre que será visto al imprimirlo en la aplicación.

Una vez que tenemos nuestro modelo veamos cómo se recorre en Django, prestemos especial atención a que sin haber creado la llave primaria Django nos crea el campo ID con el cual identificaremos nuestro registro:


django_defcampos2.jpg


Con esto finalizamos este tutorial, teniendo el conocimiento necesario para saber qué pasa cuando definimos campos en un modelo y la forma en que debemos hacerlo.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X