El video no muestra el código que estas escribiendo @PabloTrinidad. Al parecer hay que re-editar.
Bienvenida
Todo lo que aprenderás sobre Django
Cimientos
Arquitectura de una aplicación
The Twelve-Factor App
Codebase: Settings modular
Codebase: Dependencias y archivos de docker
Codebase: Docker
Setups alternativos
Modelos
Herencia de modelos
Proxy models
App de usuarios
Organizando modelos en un paquete de Django
Creando el modelo de perfil de usuario
Solución del reto: arreglando la migración de users a user
Aplicación y modelo de círculos
Migraciones y admin de círculos
Introducción a Django REST Framework
Aprende cómo construir tu propio API con Django Rest Framework
Vistas, URLs y Parsers de DRF
Serializers
Buenas prácticas para el diseño de un API REST
Request, response, renderers y parsers
Real DRF
Autenticación y tipos de autenticación
APIView
Creando el token de autorización
User sign up
Limitar login a usuarios con cuenta verificada
Configurar envío de email
Instalar PyJWT y generar tokens
Verificar cuenta usando JWT
Actualizar modelo de circle (membership)
Crear CircleViewSet
Añadiendo autorización y paginación
Creación de circulos
Update de círculo, custom permissions y DRF Mixins
Migración de vistas de usuarios a ViewSets
Detalle de usuario
Update profile data
List members - Recursos anidado
Retrieve destroy member
Modelo de invitaciones y manager
Obtener invitaciones de un miembro
Unirse a grupo
Filtrado
App de rides y modelos
Implementar la publicación de un ride
Validación de campos de un serializer
Listado de rides
Editar un ride
Unirse a viaje
Terminar viaje
Calificar viaje
Tareas asíncronas
¿Qué es Celery?
Creando tarea asíncrona
Creando tarea periódica
Testing
Python unittest y Django TestCase
DRF APITestCase
Django Admin
Admin actions: Modificar datos de un query
Admin actions: Regresando una respuesta HTTP
Deployment
Instalación de la aplicación
Configuración del dominio en Mailgun y del Bucket en Amazon S3
Configuración final de Docker Container usando Supervisor
Tutorial de despliegue de la aplicación
Futuros pasos y cierre del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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
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 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 “created” y “modified” son necesesarios en todos ellos, asique con esta herencia nos ahorramos 20 lineas de codigo por cada modelo, recuerden el dicho “Dont repeat” jajajaja
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'
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.
Remote Container in VSC
Remote Python Development in Visual Studio Code
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.
No olviden el Coding style de Django
https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/coding-style/
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 “Curso 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)?
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?
o inicia sesión.