Tipos de Campos y Atributos comunes

Atributos comunes

Atributos de uso general: 

db_column: establece el nombre que puede ser asignado a la columna de la tabla en la base de datos
default: establece el valor que debera tenerl el campo por default.
null: permite que el campo sea guardado en la base sin contenido ingresado por el usuario y en la base de datos se guardara NULL como valor.
blanck: Permite que el campo sea guardado en la base sin contenido ni información.
verbose_name: establece el nombre de la etiqueta
unique: permite la verificación del campo en la BD, de manera que no puedan introducirse valores repetidos.

Atributos especiales:

Para campos de texto:
max_lenght: establece el maximo de caracteres que el campo puede admitir.

Para campos de archivo:
upload_to: establece la ruta en disco donde el servidor debera guardar los archivos subidos a la plataforma.

Para campos con numericos decimales: 
max_digits: establece el maximo de cifras permitidas por el campo
decimal_places: establece el maximo de cifras decimales permitidas por el campo.

Tipos de campos:
AutoFild: permite insertar un campo autonumerable que es gestionado por la base de datos, este campo no es desplegado por las vistas.
CharField: permite agregar texto.
TextField: permite agregar texto, este sin embargo tiene el aspecto de un cuadro para comentarios o textos extensos.
BooleanField: permite guardar información del tipo verdadero o falso, en la base de datos se guarda respectivamente un 1 (verdadero) o un 0 (falso) segun corresponda. Este campo se despliega en pantalla como un checkbox.
DateField: permite almacenar la fecha
DateTimeField: similar al anterior pero permite agregar información como la hora.
IntegerField: permite agregar campos de numeros enteros.
DurationField: permite agregar tiempos de duración en formato de Dias horas:minutos:segundos eje 3d 2:20:20 esto es 3 dias con 20h con 20m y 20 segundos.
EmailField: permite introducir correos electronicos, este campo es verificado automaticamete por django
URLField: permite almacenar direcciones de internet.
FilePathField: permite almacenar una ruta a un archivo en el disco local del servidor, en pantalla es mostrado como una lista desplegable donde aparecen los nombres de cada archivo.
FileField: permite subir archivos al servidor
ImageField: permite subir imagenes al servidor, este ademas tiene incorporado un sistema de verificación para comprobar que el archivo subido sea efectivamente una imagen.

En resumen tenemos la siguiente recopilación de campos y los tipos de atributos que podemos manejar dentro de django, existen muchos mas, sin embargo te invito a investigar por tu cuenta, te recomiendo este sitio, tiene información muy completa del tema: http://aprendedjango.blogspot.com/2013/11/modelos-en-django.html

Tipo de campo     DescripciónTipos de atributos que puede usar
AutoFild
Permite insertar un campo autonumerable que es gestionado por la base de datos, este campo no es desplegado por las vistas.
db_column
verbose_name
unique
CharField:
permite agregar texto.
db_column
verbose_name
unique
null
blank
max_lenght:
BooleanField
permite guardar información del tipo verdadero o falso, en la base de datos se guarda respectivamente un 1 (verdadero) o un 0 (falso) segun corresponda. Este campo se despliega en pantalla como un checkbox.
DateField: permite almacenar la fecha
db_column
verbose_name

DateField
permite almacenar la fecha
unique_for_date
unique_for_month
unique_for_year
auto_now
auto_now_add
db_column
verbose_name
unique
null
blank
DateTimeField
similar al anterior pero permite agregar información como la hora.
unique_for_date
unique_for_month
unique_for_year
auto_now
auto_now_add
db_column
verbose_name
unique
null
blank
IntegerField:
permite agregar campos de numeros enteros.
db_column
verbose_name
unique
null
blank
DurationField
permite agregar tiempos de duración en formato de Dias horas:minutos:segundos eje 3d 2:20:20 esto es 3 dias con 20h con 20m y 20 segundos.
db_column
verbose_name
unique
null
blank
EmailField
permite introducir correos electronicos, este campo es verificado automaticamete por django
db_column
verbose_name
unique
null
blank
URLField
permite almacenar direcciones de internet.
db_column
verbose_name
unique
null
blank
FilePathField
permite almacenar una ruta a un archivo en el disco local del servidor, en pantalla es mostrado como una lista desplegable donde aparecen los nombres de cada archivo.
db_column
verbose_name
unique
null
blank
path
match
recursive
allow_files
allow_folders
FileField
permite subir archivos al servidor
db_column
verbose_name
unique
null
blank
upload_to
ImageField
permite subir imagenes al servidor, este ademas tiene incorporado un sistema de verificación para comprobar que el archivo subido sea efectivamente una imagen.
db_column
verbose_name
unique
null
blank
upload_to


Para demostrar un ejemplo rapido del uso de estos campos crearemos un proyecto con una aplicación cuyo modelo manejara la siguiente información.

from django.db import models
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

class ejemplo(models.Model):
    campo1= models.AutoField(primary_key=True, verbose_name="ID",db_column="PK", unique=True)
    campo2=models.CharField(max_length=20,db_column="Texto",verbose_name="Campo de texto",default="Hola mundo", null=True, blank=True)
    campo3=models.TextField(db_column="Area_Texto", verbose_name="Area de texto", blank=True)
    campo4=models.BooleanField(db_column="Booleano", verbose_name="Campo V/F", default=True)
    campo5=models.DateField(db_column="Fecha", verbose_name="Fecha", help_text="dd/mm/aaaa")
    campo6=models.DateTimeField(db_column="FechaYHora", verbose_name="Hora y Fecha", )
    campo7=models.DecimalField(db_column="Decimales",verbose_name="# Decimales",max_digits=5, decimal_places=2)
    campo8=models.IntegerField(db_column="Enteros", verbose_name="# Enteros")
    campo9=models.DurationField(db_column="Duracion", verbose_name="Duracion")
    campo10=models.EmailField(db_column="Email", verbose_name="Email")
    campo11=models.URLField(db_column="Links", verbose_name="Link URL", default="", blank=True)
    campo12=models.FilePathField(db_column="File_Selector",path=BASE_DIR+"/media/imagenes", verbose_name="Selector de Archivos", default="")
    campo13=models.FileField(db_column="File",upload_to=BASE_DIR+"/media/archivos", verbose_name="Subir Archivo", default="")
    campo14=models.ImageField(db_column="image",upload_to=BASE_DIR+"/media/imagenes", verbose_name="Subir Imagen",default="")

Y para hacer funcionar esto debemos agregar en el archivo settings (ademas de toda la configuración que ya sabemos) las siguientes lineas de codigo.

MEDIA_ROOT="/"
MEDIA_URL="/media/"

Esto generara una vista como la siguiente:


Si ingresamos datos y guardamos


Los archivos de imagen deberan subirse a nuestra carpeta imagenes


Los archivos comunes deberian subirse a nuestra carpeta archivos


Y el resto de la información debe guardarse en nuestra BD, en este caso los campos vacios fueron guardados debido a las propiedades Null y blanck de los campos. En este caso el registro 6 representa nuestros datos agregados.












Comentarios