La soluzione migliore con un ampio set di modelli consiste nell'utilizzare i moduli django a proprio vantaggio e semplicemente creare una cartella denominata modelli. Sposta la tua vecchia models.py in questa cartella di modelli e rinominala __init__.py
. Ciò ti consentirà di separare ciascun modello in file più specifici all'interno di questa cartella del modello.
Dovresti quindi solo importare ogni modello nello spazio dei nomi di __init__.py
.
Così, per esempio, si potrebbe desiderare di separarla in:
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
Allora la vostra __init__.py
può essere solo:
from basic import * # You should replace * with each models name, most likely.
from managers import YourManager # Whatever your manager is called.
Questa è la struttura che uso quando i miei file modello ottengono enorme, tuttavia cerco di separare le cose in app più collegabili il più spesso possibile - quindi questo è usato raramente da me.
Spero che questo aiuti.
Come si gestiscono quindi in modo pulito model.py che è necessario importare managers.py e viceversa? – Jeff
managers.py non dovrebbe aver bisogno di importare i modelli - il modello in questione sarà sempre disponibile come 'self.model' sul gestore. – jacobian
È fantastico ... a meno che il QuerySet del tuo manager non faccia riferimento a un altro modello, quindi non puoi importarlo e DEVE inserirlo in models.py (ad es. Se stai escludendo elementi esistenti in un altro modello, ecc.). –