Probablemente empezaste creando una aplicación de Django que podía presumir de "limpia". Tus modelos tienen un par de métodos añadidos, con lógica sencilla. Tus vistas hacen consultas simples y devuelven templates con un contexto razonable.
Con el tiempo, los modelos empiezan a cambiar, necesitas hacer vistas que devuelven contextos con datos más complejos, aumenta la cantidad de métodos en los modelos, las vistas empiezan a implementar lógica y, ahora que lo piensas, puedes reutilizar esa función, así que la sacas a un módulo de utilidades, quizá lo decides bautizar como controlador.
Después de todas esas fantásticas nuevas features que has conseguido implementar, tienes modelos de cientos de líneas, lógica desparramada en varios ¨controladores" que importas en tantos módulos que, cada vez que creas uno nuevo, optas por copiar y pegar los import de siempre. Ah, y cada vista tienen más lógica que tu trabajo fin de carrera. ¿En cual de los "controladores" estaba esa función que te da una lista de ids y nombres de usuarios con datos sobres sus vehículos y sus casas? ¿En el controlador de usuarios, el de vehículos, el de casas o el controlador de controladores?
No te preocupes, hay varias soluciones. Nosotros te proponemos la que utilizamos en StyleSage, basada en una clara división de responsabilidades entre modelos, proxy models, managers y vistas. Verás como lo encuentras todo a la primera, ¡Y sin dependencias circulares!
Graduado en Ingeniería Informática por la Universidad de Valladolid, he trabajado en dicha ciudad en aplicaciones desktop, móviles y, sobre todo, web, para grandes y pequeñas consultoras y organismos de gobierno.
He usado tantos lenguajes de programación en proyectos profesionales o personales que no consigo recordarlos todos, pero me he quedado con Python y Javascript.
Hace algo más de diez meses decidí probar cosas nuevas y me mudé a Madrid para aprender de y ayudar a crecer a lo que entonces era una startup (estamos orgullosos de decir que ya no tanto), StyleSage, donde construimos una plataforma web orientada al sector de la moda, pero no esperéis que tenga buen gusto al vestir.