Soy nuevo en la pirámide y he estado luchando por hacer algunos cambios en mi proyecto. Estoy tratando de dividir mis modelos/clases en archivos individuales en lugar de un único archivo models.py. Para hacerlo, he eliminado el viejo models.py y he creado una carpeta de modelos con el archivo __init__.py
junto con un archivo para cada clase. En __init__.py
importé la clase usando from .Foo import Foo
.¿Cómo divido models.py en diferentes archivos para diferentes modelos en Pyramid?
Esto hace que las vistas funcionen correctamente y pueden inicializar un objeto.
Pero ejecutar el script initializedb no crea nuevas tablas como lo hizo cuando tenía todos los modelos en un solo models.py. No crea las tablas relevantes, sino que directamente intenta insertarlas.
¿Alguien me puede dar un ejemplo de una estructura de proyecto piramidal que tiene modelos en diferentes archivos?
¡Gracias por la respuesta! Tengo curiosidad por saber por qué necesitamos el mismo objeto Base en todos los modelos. Pensé que Base sería un objeto estático/compartido que recogería todos los metadatos, independientemente de donde se invoque. – KaranK
No necesita la misma base o metadatos, pero sin duda ayuda a mantener las cosas claras. Cada motor de base de datos debe tener un objeto de metadatos que describa el esquema para ese motor. En Python, los módulos solo se ejecutan cuando los importas, por lo que cuando rompes los modelos.py en múltiples módulos individuales, no se recogerán hasta que se importe cada uno de ellos. –