Modelos en Django

August 24, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Modelos en Django...

Description

 

  Modelos en Django ¿Qué es un modelo? En Django los modelos son como django tratara los datos, contendrá los campos de los objetos o bjetos que queremos guardar. Generalmente django creara por cada modelo una tabla en la base de datos. Lo básico: Cada modelo es una clase python que hereda de django.db.models.Model   Cada atributo del modelo representa un campo de la tabla de la base de datos     Django de base nos da acceso a la base de datos.

Usando los modelos: Para crear un modelo lo primero es añadir al settings.py la aplicación en la que esta contenida el models.py, para ello nos dirigimos a INSTALLED_APPS del setting y añadimos el nombre de la aplicación:

INSTALLED_APPS = ( #... 'myapp', #...  ) A la hora de usar los campos de un modelo tendrás que importar models y llamarlo cada vez que vayas a crear un campo. Los modelos se suelen guardan en el models.py de la aplicación previamente creada.  from django.db import models class Car(models.Model): manufacturer = models.ForeignKey('Manufacturer') # ... Los campos:

Los campos son el tipo de objeto del atributo que guardara, hay varios tipos:

   AutoField : Es un IntegerField que se incrementa cuando creas cr eas un nuevo objeto, casi que



no es necesario ya que django lo crea solo si no especificas otro campo como id.

  BigIntegerField : Representa un Entero de 64 bit, es como el IntegerField, solo que



permite números desde el -9223372036854775808 hasta el 9223372036854775807. El campo por defecto de los formularios es el TextField.

  BooleanField: El campo de true/false. El campo por defecto de los formularios es un



CheckboxInput. El vlaor por defecto es None si no defines el default.

 

  CharField: Para string pequeños, frases o palabras. El campo por defecto en los



formularios es el TextInput. max_length=20: Establece el tamaño máximo del string, es requerido. o    CommaSeparateIntegerField: Guarda una lista de enteros separados por coma. o  Max_length=20: Establece el valor máximo de los enteros, es requerido.



  DateField: Guarda una instancia de la fecha a partir de la clase datetime.date de



python.

  auto_now=True: Actualiza la fecha cada vez que se actualiza el objeto. auto_now_add=True: Guarda la fecha de cuando se creo. o  o

  DateTimeField: Como el DateField solo que guarda también la hora auto_now=True: Actualiza la fecha cada vez que se actualiza el objeto. o  auto_now_add=True: Guarda la fecha de cuando se creo. o 



  DecimalField: Guarda números decimales. max_digits=5: Establece el numero de dígitos máximo, la suma de la parte o 



entera y la decimal o  decimal_places=2: Establece el número de dígitos de la parte decimal.

  EmailField : Es un CharField que comprueba lo introducido para verificar que sea un



email.

  max_length=75: Establece el tamaño máximo del email, es requerido.

o

  FileField: Sirve para guardar archivos en el servidor. En el formulario saldría el campo



de escoger un fichero del ordenador. Tiene que estar definido el MEDIA_ROOT en el settings para que guarde los archivos. Guardara el archivo en la ruta especificada por el MEDIA_ROOT. o  upload_to='/videos': Subirá el archivo a la carpeta vídeos alojada en la carpeta definida por MEDIA_ROOT. (Requerido) FileField(upload_to='/video'[, max_length=100, **options]): si se quiere poner o  los atributos opcionales tendrán que añadirse así.

  FilePathField: Sirve para mostrar los archivos accesible de una carpeta siguiendo una



restricción si se quiera, para hacer alguna operación sobre ellos.

 

o

FilePathField(path=None[, match=None,recursive=False, max_length=100, **options])   path (requerido): directorio del que sacara FilePathField las opciones.   match: filtro por el que pasaran los archivos, se usaran expresiones regulares.   recursive: False por defecto, especifica si entran las subcarpetas de la ruta indicada por path.   max_length: Indica el tamaño máximo del nombre del archivo. 







  FloatField: Campo que guarda una instancia del modelo Float de python.



  ImageField: Como el FileField pero solo acepta formatos de imágenes. Tiene dos



campos opcionales mas que el FielField o  height_field: Representa el alto máximo de la imagen.

  width_field: Representa el ancho máximo de la imagen.

o

 

  IntegerField: Guarda un entero.



  IPAddressField : Guarda un string que coincida con el formato ip (192.168.0.1).



  GenericIPAddressField: Guarda una ip, ya sea ipv4 o ipv6. Para saber cómo las guarda



Doc Django.

  NullBooleanField: Como el BooleanField pero permite null.



  PositiveIntegerField: Guarda un entero mayor o igual que cero.



  SlugField:  Campo que guarda una pequeña pequeña etiqueta (letras, números, números, guiones) suele



usarse en las url.

  TextField: Campo que guarda texto.



  TimeField: Guarda una hora, comparte los campos con DateField auto_now=True: Actualiza la hora cada vez que se actualiza el objeto. o  auto_now_add=True: Guarda la hora de cuando se creó. o 



  URLField: Guarda una dirección html, comprueba que lo introducido sea una dirección



html. Campos de relación: ForeignKey:  Para referir objetos a un objeto, un modelo puede referirse a un modelo,   pero un modelo puede estar referido a más de uno, es lo que se llama un many-to-one referencia.

  ManyToManyField: Para guardar una referencia a varios objetos de la misma clase. Hay



que definir la clase con la que se relaciona. Va guardando las l as referencias a esos objetos en una lista con las primary keys referncia.

  OneToOneField: Es como el ForeignKey For eignKey pero tiene unique=True, por lo que solo puede



haber una referencia a ese objeto.

Opciones que tiene todos los campos: null=True: Permite que los valores puedan ser null.  

  blank=True: Permite que el campo se pueda quedar en blanco.



  choices=meses: Permite asignar un diccionario de elementos a un objetos para que los



valores solo sean los contenidos en el diccionario. La clave del diccionario sera lo que se guarda en la base de datos, el valor asociado a sociado sera lo que se mostrar en el formulario que lo use.

  db_column: El nombre de la columna donde django guardara el campo, si no se



especifica guarda el nombre del campo.

 

  db_index=True: Sirve para indexar el campo en las búsqueda de django. Por defecto



django busca entre las PK de la base de datos, si añades esto también buscara entre esos datos y no tendrás que acceder directamente al objeto para comprobar el campo en las búsquedas.

  db_tablespace: El nombre al que se referencia para buscar si ha sido indicado como



index.

  default: El valor por defecto que tiene el modelo, si se va a guardar un valor distinto a



vació se guardara con el valor por defecto.

  editable=False: Indica si el valor se puede modificar, si es falso no aparecerá en el



admin ni similares.

  error_messages={null:"Hay que darle un valor",blank:"No se puede dejar en



blanco",invalid=" E Ell valor introducido es erróneo", invalid_choice:"Has escogido un valor inadecuado", unique="Este valor ya existe"}: Como se ve en el ejemplo hacer referencia a los mensajes que se mostraran si se produce ese error. No hace falta crear todos los mensajes. Si no los creas saldrá el que tiene por defecto.

  help_text ="Inserta ="Inserta un nombre": Un texto que aparecerá en forma de ayuda en el



campo del formulario. =True: Para asignar que el campos es la clave primaria del modelo.    primary_key =True:



  unique=True: Indica que el valor es único, solo podrá haber uno en la base de datos.



  unique_for_date='pub_date': El valor de esta propiedad tendrá que existir como campo



del modelo y tendrá que ser del tipo DateField o DateTimeField. Lo que hace es no dejar que haya un elemento con el mismo valor del campo y el mismo día.

  unique_for_month='pub_date':  El valor de esta propiedad tendrá que existir como



campo del modelo y tendrá que ser del tipo DateField o DateTimeField. Lo que hace es no dejar que haya un elemento con el mismo valor del campo y el mismo mes.

  unique_for_year='pub_date' : El valor de esta propiedad tendrá que existir como campo



del modelo y tendrá que ser del tipo DateField o DateTimeField. Lo que hace es no dejar que haya un elemento con el mismo valor del campo y el mismo año.

  verbose_name="Nombre de usuario": Nombre del campo comprensible por humanos,



si no se crea django lo generar automáticamente, convirtiendo los guiones en espacios.

  validators=[]: Una lista de validaciones para el campo referencia.



Documentación oficial más completa Doc Django Para seguir con el ejemplo tratado anteriormente crearemos un modelo más complejo: #encoding:utf-8  from django.db import models

 

  PAISES=(('ES','Español'),('EN',"Ingles"),('DE','Aleman')) class Autor(models.Model): nombre = models.CharField(max_length=20, help_text='Introduce el nombre del autor') apellidos = models.CharField(max_length=60, blank=True, null=True) nacimineto = models.DateField(blank=True, null=True) nacionalidad = models.CharField(max_length=10, choices=PAISES, default='ES') correo = models.EmailField(unique=True, blank=True, null=True)  foto = models.ImageField(upload_to='/imagenes', blank=True, blank=True, null=True)  pagina = models.URLField(blank=True, null=True) null=True) def __unicode__(self): return self.nombre class Libro(models.Model): titulo = models.CharField(max_length=100) autor = models.ForeignKey('Autor')  paginas = models.IntegerField(blank=True, models.IntegerField(blank=True, null=True) resumen = models.TextField() texto = models.FileField(upload_to='/libros', blank=True, null=True) terminado = models.BooleanField(default=False) def __unicode__(self): return self.titulo def get_puntuacion_media(self): return 0 Con esto doy por concluidos los modelos, si tenis alguna duda no dudéis en dejar un comentario, enviar un correo o lo que queráis.

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF