Bienvenida

1

Todo lo que aprender谩s sobre Django

Cimientos

2

Arquitectura de una aplicaci贸n

3

The Twelve-Factor App

4

Codebase: Settings modular

5

Codebase: Dependencias y archivos de docker

6

Codebase: Docker

7

Setups alternativos

Modelos

8

Herencia de modelos

9

Proxy models

10

App de usuarios

11

Organizando modelos en un paquete de Django

12

Creando el modelo de perfil de usuario

13

Soluci贸n del reto: arreglando la migraci贸n de users a user

14

Aplicaci贸n y modelo de c铆rculos

15

Migraciones y admin de c铆rculos

Introducci贸n a Django REST Framework

16

Aprende c贸mo construir tu propio API con Django Rest Framework

17

Vistas, URLs y Parsers de DRF

18

Serializers

19

Buenas pr谩cticas para el dise帽o de un API REST

20

Request, response, renderers y parsers

Real DRF

21

Autenticaci贸n y tipos de autenticaci贸n

22

APIView

23

Creando el token de autorizaci贸n

24

User sign up

25

Limitar login a usuarios con cuenta verificada

26

Configurar env铆o de email

27

Instalar PyJWT y generar tokens

28

Verificar cuenta usando JWT

29

Actualizar modelo de circle (membership)

30

Crear CircleViewSet

31

A帽adiendo autorizaci贸n y paginaci贸n

32

Creaci贸n de circulos

33

Update de c铆rculo, custom permissions y DRF Mixins

34

Migraci贸n de vistas de usuarios a ViewSets

35

Detalle de usuario

36

Update profile data

37

List members - Recursos anidado

38

Retrieve destroy member

39

Modelo de invitaciones y manager

40

Obtener invitaciones de un miembro

41

Unirse a grupo

42

Filtrado

43

App de rides y modelos

44

Implementar la publicaci贸n de un ride

45

Validaci贸n de campos de un serializer

46

Listado de rides

47

Editar un ride

48

Unirse a viaje

49

Terminar viaje

50

Calificar viaje

Tareas as铆ncronas

51

驴Qu茅 es Celery?

52

Creando tarea as铆ncrona

53

Creando tarea peri贸dica

Testing

54

Python unittest y Django TestCase

55

DRF APITestCase

Django Admin

56

Admin actions: Modificar datos de un query

57

Admin actions: Regresando una respuesta HTTP

Deployment

58

Instalaci贸n de la aplicaci贸n

59

Configuraci贸n del dominio en Mailgun y del Bucket en Amazon S3

60

Configuraci贸n final de Docker Container usando Supervisor

61

Tutorial de despliegue de la aplicaci贸n

62

Futuros pasos y cierre del curso

Herencia de modelos

8/62
Recursos

La herencia de modelos puede ser 煤til porque podemos tener datos generales que pueden ser heredados por otras que no necesariamente tienen su propia tabla, porque queremos que haya herencia de m煤ltiples tablas que se reflejan en la base de datos o porque queremos extender la funcionalidad de un modelo.

Aportes 17

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

El video no muestra el c贸digo que estas escribiendo @PabloTrinidad. Al parecer hay que re-editar.

Donde trabajo implementan uno similar pero m谩s completo a mi parecer, se necesita tener django crum para poder usar el m茅todo get_current_user().

class Auditoria(models.Model):
    """
    Modelo de Auditoria donde se va a guardar de forma automatica la fecha de
    creaci贸n de un objeto, quien lo cre贸, la fecha de la 煤ltima actualizaci贸n y
     quien fue el que lo actualiz贸, este modelo no tendr谩 vista en la parte
    administrativa de la plataforma ya que se usa como herencia en todos los
    modelos para recrear este registro autom谩tico sobre todos los datos que
    se trabajan en la misma.
    """
    fecha_creacion = models.DateTimeField(auto_now_add=True,
                                          verbose_name='Fecha de creaci贸n')
    """Fecha Creacion - tipo: DateTimeField"""
    creado_por = models.ForeignKey(User, on_delete=models.CASCADE,
                                   related_name='%(class)s_creado_por',
                                   null=True, blank=True,
                                   verbose_name='Usuario de creaci贸n')
    """Creado Por - tipo: ForeignKey"""
    fecha_actualizacion = models.DateTimeField(auto_now=True,
                                               verbose_name='Fecha de actualizaci贸n')
    """Fecha Actualizacion - tipo: DateTimeField"""
    actualizado_por = models.ForeignKey(
        User, on_delete=models.CASCADE,
        related_name='%(class)s_modificado_por',
        null=True, blank=True,
        verbose_name='Usuario 煤ltima actualizaci贸n')
    """Actualizado Por - tipo: ForeignKey"""

    class Meta:
        abstract = True

    def traer_usuario(self):
        return get_current_user()

    def save(self, *args, **kwargs):
        if self.fecha_creacion is None:
            self.creado_por = self.traer_usuario()
            self.actualizado_por = self.traer_usuario()
        else:
            self.actualizado_por = self.traer_usuario()
        super(Auditoria, self).save(*args, **kwargs)

Mientras re-editan el video les dejo el codigo de la clase CRideModel para que puedan seguir mejor el video.

class CRideModel(models.Model):
    """Comparte Ride base model.

    CRideModel acts as an abstract base class from which every
    other model in the project will inherit. This class provides
    every table with the following attributes:
        + created (DateTime): Store the datetime the objects was created
        + modified (DateTime): Store the last datetime the objects was modified
    """

    created = models.DateTimeField(
        'created at',
        auto_now_add = True
        help_text='Date time on which the object was ccreated.'
        )
    modified = models.DateTimeField(
        'modified at',
        auton_now = True
        help_text='Date time on which the object was modified.'
        )

    class Meta:
        """Meta option."""

        abstract = True

        get_lasted_by = 'created'
        orderinng = ['-created', '-modified']```

Hola por favor muestra lo que estas haciendo en consola y en el editor.

Hola @PabloTrinidad, estas escribiendo c贸digo pero no muestras lo que realizas, ajustar esto por favor !

En mi IDE (vscode) tengo el problema de que no me est谩 entendiendo mi import de django.db.

Me sale el siguiente error (s贸lo en la ayuda del ide)

unresolved import 'django.db'

En este caso usamos la herencia de modelos para crear una base de atributos que vamos a pasar a cada modelo de nuestra API, ya que 鈥渃reated鈥 y 鈥渕odified鈥 son necesesarios en todos ellos, asique con esta herencia nos ahorramos 20 lineas de codigo por cada modelo, recuerden el dicho 鈥淒ont repeat鈥 jajajaja

Que raro, un error de edici贸n 馃う

Wou, cookiecutter es demasiado interesante, no lo conoc铆a

ctrl+f para buscar las palabras claves dentro de la documentacion o cualquier sitio web

pablo escribe asbtract = True, y es abstract = True, se que es un error tonto pero se fue hasta el repo https://github.com/pablotrinidad/cride-platzi/commit/4fbcaa66286549c525f3b4d5fc5d769aa63429a3#diff-5e3c5cd6de92631ca6dcbf710e56e255
as铆 que cuidado.

creo que falto el deleted_at para evitar eliminar un registro en la base de datos.

Saludos

Me gustar铆a que en el timestamp se implementara quien creo y quien modifico un objeto.

tengo una duda si en mi caso quiero crear un modelo videos y en 茅l quiero obtener la url del video en youtube, pero no quiero que los mismos se almacenen en la base de datos. Puedo generar una clase Meta: abstract = True?? Gracias.

En mi codigo;

from django.db  import models

me muestra error FROM. EL c贸digo si funciona pero me sale error por parte del editor (y ademas no me ayuda a autocompletar). Esto ya me sucedi贸 en el curso anterior 鈥淐urso Django鈥 y lo arregle apuntando el interprete de Python del editor hacia el entorno virtual.

Alguien sabe como puedo hacer para que VS Code apunte el interprete de Python al contenedor de Docker para que ya no me muestre estos errores (y el editor me ayude a autocompletar)?