what - ¿Usando modelos django en todas las aplicaciones?
linux django (6)
Entonces, en mi proyecto Django tengo algunas aplicaciones diferentes, cada una con sus propios modelos, vistas, plantillas, etc. ¿Cuál es una buena manera (la forma "Django" de hacer que estas aplicaciones se comuniquen)?
Un ejemplo específico sería una aplicación de reuniones que tiene un modelo para reuniones, y tengo una aplicación de inicio en la que quiero mostrar las 5 mejores reuniones en la página de inicio.
¿La vista de la aplicación de inicio debe consultar el modelo de la aplicación de reuniones?
Se siente como si estuviera cruzando una línea y podría haber una manera más desacoplada de hacer esto en Django.
¿La vista de la aplicación de inicio debe consultar el modelo de la aplicación de reuniones?
Sí, así es como se hace. Si realmente desea desacoplar las cosas, podría hacer que su aplicación de Home
use claves externas genéricas y algún tipo de sistema de plantilla genérico, pero no hay una buena razón para hacerlo, a menos que tenga grandes planes para que la aplicación de su casa sea conectable y funcione. Un montón de otras aplicaciones Django diferentes.
Escribir aplicaciones Django estrechamente acopladas es realmente fácil, y escribir aplicaciones Django desacopladas es realmente difícil. No se desacople a menos que tenga una razón para hacerlo, y se ahorrará mucho trabajo (¡y felicidad!).
Para lograr el desacoplamiento tanto como sea posible,
Necesitas tener una aplicación específica para el proyecto, que haga todas las conexiones entre sí.
Usar las señales de los modelos para crear nuevos modelos en una aplicación desacoplada ayuda. Pero hacer demasiado de esto, es una tontería.
Para su ejemplo específico, usaría un Django templatetag .
Tener una plantilla de "display_top_meetings" en su aplicación de Reuniones y llamarla con {{ display_top_meetings 5 }}
desde su plantilla de índice, cargándola primero.
Puedes leer más sobre templatetags aquí:
Django Documentación oficial sobre TemplateTags
Artículo de B-List sobre cómo escribir ''mejores etiquetas de plantilla''
Espero que esta ayuda!
Si fuera yo, haría una etiqueta de plantilla en su aplicación de reunión que produzca el resultado deseado e incluyera esa etiqueta de plantilla en la plantilla de la aplicación de inicio.
De esa manera, solo los acoplará en la sección Vista del MVC y hará que sea más fácil de mantener si cambia sus modelos en la aplicación de la reunión.
sí. Creo que eso es una característica de diseño. Todos los modelos comparten un backend, por lo que tendrías que hacer un trabajo extra para tener dos modelos con el mismo nombre en diferentes aplicaciones.
Los proyectos no deben compartir modelos.
En algún momento, sus aplicaciones deberán acoplarse para poder realizar cualquier trabajo. No puedes evitar eso.