Su mejor opción con un gran conjunto de modelos es utilizar los módulos django a su favor, y simplemente cree una carpeta llamada modelos. Mueva su antiguo models.py a esta carpeta de modelos y cámbiele el nombre __init__.py
. Esto le permitirá luego separar cada modelo en archivos más específicos dentro de esta carpeta modelo.
Solo necesitaría importar cada modelo en el espacio de nombre __init__.py
.
Así, por ejemplo, es posible que desee para separarlo en:
yourapp/
models/
__init__.py # This file should import anything from your other files in this directory
basic.py # Just an example name
morespecificmodels.py # Just an example name
managers.py # Might want to separate your manager into this
Luego, su __init__.py
puede ser simplemente:
from basic import * # You should replace * with each models name, most likely.
from managers import YourManager # Whatever your manager is called.
Esta es la estructura que utilizo cuando mis archivos de modelos consiguen enorme, sin embargo, trato de separar las cosas en más aplicaciones conectables con la mayor frecuencia posible, por lo que rara vez las uso.
Espero que esto ayude.
¿Cómo se maneja limpiamente con models.py que necesita importar managers.py y viceversa? – Jeff
managers.py no debería necesitar importar modelos: el modelo en cuestión siempre estará disponible como 'self.model' en el administrador. – jacobian
Eso es genial ... a menos que QuerySet de su gerente necesite hacer referencia a otro modelo, entonces no puede importarlo, y DEBE ponerlo en models.py (por ejemplo, si excluye elementos que existen en otro modelo, etc.). –