Sei sulla pagina 1di 21

Modelos en Django

 Hay un concepto en el mundo de la programación llamado programación


orientada a objetos. La idea es que en lugar de escribir todo como una
aburrida secuencia de instrucciones de programación podemos modelar cosas
y definir cómo interactúan entre ellas.
 Entonces, ¿qué es un objeto? Es un conjunto de propiedades y acciones.
 Si queremos modelar un gato crearemos un objeto Gato que tiene algunas
propiedades como: color, edad, temperamento (como bueno, malo, o
dormilón ;)), y dueño (este es un objeto Persona o en caso de un gato
callejero, esta propiedad está vacía).
 Básicamente se trata de describir cosas reales en el código con
propiedades (llamadas propiedades del objeto) y las acciones
(llamadas métodos).
 Y ahora, ¿cómo modelamos las entradas de un libro? Queremos
construir un libro, ¿no?
 Necesitamos responder a la pregunta: ¿Qué es una entrada de un
libro? ¿Qué propiedades debería tener?
 Bueno, seguro que nuestras entradas del libro necesitan un texto con
la editorial y un título, ¿cierto? También sería bueno saber quién lo
escribió, así que necesitamos un autor. Por último, queremos saber
cuándo se creó.
Modelos en Django

 Sabiendo qué es un objeto, podemos crear un modelo en Django para nuestros


entradas de libro.
 Un modelo en Django es un tipo especial de objeto que se guarda en la base
de datos. Una base de datos es una colección de datos. Es un lugar en el cual
almacenarás la información sobre usuarios, tus entradas de libros, etc.
Utilizaremos una base de datos SQLite para almacenar nuestros datos. Este es
el adaptador de base de datos predeterminado en Django -- será suficiente
para nosotros por ahora.
 Puedes pensar el modelo en la base de datos, como una hoja de cálculo con
columnas (campos) y filas (datos).
Documentacion de Django

 Un modelo es la fuente única y definitiva de información sobre sus


datos. Contiene los campos y comportamientos esenciales de los datos que
está almacenando. En general, cada modelo se asigna a una única tabla de
base de datos.
 Los basicos:
 Cada modelo es una clase de Python que subclases django.db.models.Model.
 Cada atributo del modelo representa un campo de base de datos.
 Con todo esto, Django le ofrece una API de acceso a la base de datos
generada automáticamente; Consulte Hacer consultas .
Ejemplo rápido
 Este modelo de ejemplo define a Person, que tiene una first_name y
last_name:

 first_name y last_nameson campos del modelo. Cada campo se especifica


como un atributo de clase, y cada atributo se asigna a una columna de base
de datos.
 El Person modelo anterior crearía una tabla de base de datos como esta:
 Algunas notas técnicas:
 El nombre de la tabla myapp_person,, se deriva automáticamente de algunos
metadatos del modelo, pero se puede anular. Ver nombres de tablas para más
detalles.
 Un idcampo se agrega automáticamente, pero este comportamiento puede
ser anulado. Ver campos de clave primaria automáticos .
 El SQL en este ejemplo está formateado usando la sintaxis de PostgreSQL,
pero vale la pena notar que Django usa SQL adaptado al backend de base de
datos especificado en su archivo de configuración .CREATE TABLE
Modelo de referencia de campo

 Djangocontiene todas las referencias de


API de Field que se pueden utilizar dentro
de estas encontramos 2 divisiones
opciones de campo
tipos de campo
Opciones de campo
 Los siguientes  default
argumentos están  editable
disponibles para todos los  error_messages
tipos de campo. Todos  help_text
son opcionales.
 unique

 unique_for_date
 null
 unique_for_month
 blank
 unique_for_year
 choices
 verbose_name
 db_column
 validators
 db_tablespace
Tipos de Campos

 AutoField
claseAutoField ( ** opciones )

 BigAutoField
claseBigAutoField ( ** opciones )

 BigIntegerField
claseBigIntegerField ( ** opciones )
Tipos de Campos

 BinaryField
classBinaryField ( max_length = None , ** opciones )

 BooleanField
claseBooleanField ( ** opciones )

 CharField
classCharField ( max_length = None , ** opciones )
Tipos de Campos

 DateField
classDateField ( auto_now = False , auto_now_add = False , ** opciones )

 DateTimeField
classDateTimeField ( auto_now = False , auto_now_add = False , ** opciones )

 DecimalField
class DecimalField(max_digits=None, decimal_places=None, **options)
Tipos de Campos

 DurationField
class DurationField(**options)

 EmailField
class EmailField(max_length=254, **options)

 FileField
class FileField(upload_to=None, max_length=100, **options)
Tipos de Campos

 FloatField
class FloatField(**options)

 ImageField
class ImageField(upload_to=None, height_field=None, width_field=None,
max_length=100, **options)

 IntegerField
class IntegerField(**options)
Tipos de Campos

 GenericIPAddressField
class GenericIPAddressField(protocol='both', unpack_ipv4=False, **options)

 NullBooleanField
claseNullBooleanField ( ** opciones )

 PositiveIntegerField
clasePositiveIntegerField ( ** opciones )
Tipos de Campos

 PositiveIntegerField
class PositiveIntegerField ( ** opciones )

 PositiveSmallIntegerField
class PositiveSmallIntegerField(**options)

 SlugField
class SlugField(max_length=50, **options)
Tipos de Campos

 SmallIntegerField
class SmallIntegerField ( ** opciones )

 TextField
classTextField ( ** opciones )

 URLField
class URLField(max_length=200, **options
Tipos de Campos

 UUIDField
class UUIDField(**options)
Campos de relaciones

 Django también define un conjunto de campos que representan


relaciones.
 ForeignKey
class ForeignKey(to, on_delete, **options)
 ManyToManyField
class ManyToManyField(to, **options)
 OneToOneField
class OneToOneField(to, on_delete, parent_link=False, **options)
Ejercicio

Potrebbero piacerti anche