Soy algo así como un principiante de Django y he estado tratando de desacoplar mis aplicaciones tanto como sea posible y construirlo en piezas reutilizables como sea posible. Tratando de seguir la estrategia de James Bennett de construir re-usable apps. Con eso en mente, me encontré con este problema.¿Cómo crear aplicaciones Django reutilizables?
Digamos que tenía una aplicación que almacena información sobre las películas:
El código sería algo como esto:
class Movie(models.Model):
name = models.CharField(max_length=255)
...
Ahora, si quisiera añadir notas, que podría utilizar Django-calificación y simplemente agregar un campo a mi modelo:
class Movie(models.Model):
name = models.CharField(max_length=255)
rating = RatingField(range=5)
...
Esto significa que mi inherentemente la aplicación de película depende ahora de Django calificaciones y si quería volver a usarlo, pero ya no necesitaba calificaciones, Todavía tendría que instalar django-ratings o modificar y desviar mi aplicación.
Ahora, podría solucionar esto con try/except con importación y definir el campo si tiene éxito, pero ahora mi aplicación de película está explícitamente ligada a la clasificación en la definición de la tabla de la base de datos.
Parece mucho más sensato separar los dos modelos y definir la relación en el modelo de evaluación en lugar de la película. De esa forma, la dependencia se define cuando uso la calificación, pero no es necesaria cuando uso la aplicación Movie.
¿Cómo lidiar con este problema? ¿Hay un mejor enfoque para separar los modelos?
También me pregunto si hay alguna penalización de rendimiento importante al hacer esto.
editar: Quiero aclarar que este es más un ejemplo del problema y un tanto artificial para ilustrar un punto. Quiero poder agregar información adicional sin modificar el modelo de "Película" cada vez que necesito agregar datos relacionados. Aprecio las respuestas hasta ahora.
Me encantan todas tus películas, amigo. – zeekay