Quiero crear un modelo que no se asocie a una tabla de base de datos. En cambio, se queda en la memoria como un objeto python.cómo crear un modelo Django que no se correlaciona con una tabla de base de datos
En realidad, se supone que este modelo representa datos normalizados de muchos otros modelos de tabla asignada.
Los otros modelos almacenan datos que se pueden editar varias veces en un solo día. Debido a estas ediciones múltiples, no quiero un modelo mapeado en tabla que realice normalizaciones/cálculos y los almacene en una base de datos, ya que estos datos almacenados pueden quedar desactualizados de inmediato.
Cada vez que se accede a este modelo normalizado (a través de admin), quiero realizar las normalizaciones de los datos desde los otros modelos desde cero (para que pueda mostrar los datos más actualizados) y comportarme como un normal modelo bajo administración como Mostrar la vista de lista y una vista detallada para cada fila.
Edición después de la respuesta de Shintoist:
Gracias @Shintoist de las cosas y la limpieza de proporcionar un enfoque útil. Acabo de implementarlo, pero al final toco un pequeño muro :)
@skirmantas: Sí, los cálculos están en un objeto separado. Este objeto se está pasando a las vistas personalizadas.
Problema: Un problema es que bajo admin.py, he creado un modeladminclass para este objeto (que no hereda models.Model) por lo que mis vistas personalizadas pueden sobreponerse a la vista de lista de cambios y a la vista de cambio. Luego uso admin.site.register() para registrar esta clase de modelo y modeladmin. Pero, dado que este modelo no es en absoluto un modelo de django (ya que es un objeto python independiente en la memoria) admin.site.register() arroja un error de "tipo" el objeto no es iterable ". No quiero usar el url.py en lugar de admin.py, ya que está destinado a la interfaz mientras trato de superar al administrador de backend.
Entiendo que quiera usar el administrador, pero para sus necesidades es una forma muy redonda de hacerlo. ¿No podría simplemente anular la plantilla de administrador con un enlace en algún lugar de la página a la URL que utiliza la vista que escribió? De esa forma estaría "en" el administrador. Django buscará automáticamente plantillas que anulen las entradas integradas. De lo contrario, te sugiero que vayas con la solución de Tomasz Zielinski. –
@tomas. Si creo el modelo de normalización para mapear a una tabla en la memoria, no sería aún estático. Quiero decir, el modelo cuando se abre, obtiene los últimos datos de otros modelos, normaliza/procesa esos datos y muestra una lista. Ahora, mientras tanto, si alguien edita los otros modelos, estos no se mostrarían en el modelo de normalización hasta que se reinicie el servidor (lo que recargaría la tabla de memoria). – sysasa
También me gustaría añadir, mi implementación de django ya usa tres bases de datos, una que contiene datos heredados (para poder migrarla al nuevo sistema), una SQLlite para ejecutar pruebas a través de dispositivos y la tercera, la base de datos principal. Esto también significa que agregaré una cuarta base de datos solo por el solo modelo. – sysasa