2012-12-05 15 views
8

Obecnie wszystkie moje modele są w models.py. Staje się bardzo brudny. mogę mieć oddzielny plik jak base_models.py tak, że ja tam umieścić moje główne modele, które nie chcę dotknąćCzy mogę podzielić modele w różnych plikach w django

także samą sprawę do poglądów i umieścić w osobnym folderze zamiast opracować nową aplikację

Odpowiedz

10

Tak , jest to wykonalne. To nie jest szczególnie ładny choć:

uczynić modeli modułu, dzięki czemu struktura katalogów wygląda następująco:

- models 
|- __init__.py 
|- some_model.py 
|- some_other_model.py 
|- ... 

teraz, magia tkwi w __init__.py a niektóre małe dodatki w modelach. __init__.py:

from some_model import SomeModel 
from some_other_model import SomeOtherModel 

__all__ = [ 
    'SomeModel', 
    'SomeOtherModel', 
] 

some_model.py:

class SomeModel(models.Model): 
    class Meta(object): 
     app_label = 'yourapplabel' 
     db_table = 'yourapplabel_somemodel' 
+0

podziękowania dla podkreślenia acjohnson55, było trochę wcześnie rano – tback

0

Tak, po prostu utwórz folder o nazwie models iw tym folderze umieścić wszystkie swoje oddzielonych plików modelowych. Musisz umieścić plik o nazwie __init__.py w folderze models, aby można go było uznać za moduł models. W __init__.py użyć from ... import ... umieścić nazwiska mają być dostępne bezpośrednio w yourapp.models, w przeciwnym razie trzeba będzie importować je jako yourapp.models.base_model, czy cokolwiek modułem nazwa używana.

Ponadto w każdym modelu należy dodać atrybut Meta o nazwie app_label = 'yourapp', aby upewnić się, że modele są rozpoznawane jako część aplikacji.

0

można oddzielić plik modelu tak:
------- modele/
--------- ----- startowych .py
-------------- usermodels.py
--------------othermodel.py

w startowych .py:
--------------- od importu modeli użytkownika *
--------------- z innego importu modeli *
oraz w modelach *. py, dodać META klasę:
-------- class Meta:
-------------- app_label = 'appName'

Powiązane problemy