# ORM

# Modelos

Para la persistencia de la infromación Django maneja modelos dentro de su ORM

from django.db import models
from uuid import uuid4
from django.contrib.auth.models import User

# Create your models here.
class SiiCustomer(models.Model):
    uuid = models.UUIDField(default=uuid4(), primary_key=True) # identificador único
    user = models.ForeignKey(User, on_delete=models.CASCADE) # cuenta de usuario
    rut = models.CharField(default="", blank=True, null=True, max_length=20) # clave
    clave = models.CharField(default="", blank=True, null=True, max_length=50)
    token = models.CharField(default="", blank=True, null=True, max_length=50)
    cookies = models.TextField(default="", null=True, blank=True)

class LibroSii(models.Model):
    uuid = models.UUIDField(default=uuid4(), blank=True, primary_key=True) # identificador único
    customer = models.ForeignKey(SiiCustomer, on_delete=models.CASCADE)
    mes = #...
    anio = #...
    tipo = #...

# Trabajando con modelos

Asumamos que tenemos un modelo cualquiera llamado Person para cada modelo de Django podemos hacer alguna de las siguientes funciones:

# models.py
from django.db import models

class Person(models.Model):
    name = CharField(default="", max_length=50)
    age = IntegerField(default=0)

# somefile.py
obj = Person.objects.get(pk=1) # obtener un registro por su Primary Key
obj = Person.objects.get(name="Hector") # obtener un registro por algun campo especifico
obj.name # podemos acceder a sus datos

# actualiar el valor de un campo
obj.age = 40 
obj.save()

queryset = Person.objects.all() # obetener todos los registros de una Tabla/Modelo

# podemos cambiar el orden por defecto
queryset = Person.objects.all().order_by('name') # ASCENDENTE
queryset = Person.objects.all().order_by('-name') # DESCENDENT

queryset = Person.objects.filter(name="Hector") # Filtrar por algun campo esto devuelve una lista

# actualizar en masa, actualizara todos los registros con los datos proporcionados
Person.objects.update(name="Hector", age=35) 

# crear un nuevo registro
instance = Person(name="Raul", age=21)
instance.save()

# Comandos

Para correr el proyecto:

$ python manage.py runserver

ó

$ ./manage.py runserver

Al crear un nuevo modelo o hacer algun cambio en sus campos:

$ python manage.py makemigrations
$ python manage.py migrate

# Variables de Entorno

import os
 
# printing environment variables
print(os.environ)
print(os.environ.get('DEBUG', None))

# Enlaces útiles

UUID Advenced filtering