Patrones_Django - SamuelGJ0320/Topi-Ing-Soft_Nomy GitHub Wiki
Normalización de modelos
Para evitar tener código repetido en mis modelos, apliqué el patrón de normalización usando herencia con modelos abstractos en Django. Me di cuenta de que tanto Review como Reservation compartían campos como restaurant, user y created_at, así que creé un modelo base llamado RestaurantInteraction del que ambos heredan.
Esto me permitió tener una estructura más limpia, fácil de mantener y mucho más escalable si más adelante necesito hacer cambios que afecten ambos modelos al tiempo.
Vistas CRUD
Migré la lógica de la vista de reservas a una vista basada en clases (CreateView) para aplicar el patrón CRUD de forma más organizada. Usar CBVs me ayudó a separar responsabilidades, escribir menos código repetido y tener mayor control sobre cada paso del proceso.
Personalicé el método form_valid() para asociar automáticamente el usuario autenticado a la reserva y también enviar una notificación por WhatsApp. Esto asegura que la reserva quede bien ligada al usuario y le da un toque más completo a la experiencia.