2012-12-05 25 views
8

'daki farklı dosyalara bölebilir miyim. Şu anda tüm modellerim models.py. İstediğiniz çok dağınık. öylesine i orada benim ana modeller koymak i görünümleri için deModelleri django

aynı durumda dokunmak istemediğiniz ve yeni bir uygulama geliştirmek yerine ayrı bir klasöre koymak base_models.py gibi ayrı bir dosya alabilir miyim

cevap

10

Evet Yapılabilir. Ama özellikle hoş değil:

modeller bir modül yapmayı, dizin yapısı bu şekilde görünür:

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

şimdi, büyü __init__.py yatıyor ve modellerde bazı küçük ekstralar. __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

sayesinde acjohnson55, sabah biraz erken oldu – tback

0

Evet, sadece models adında bir klasör oluşturun ve ayrılan model tüm dosyaları koymak o klasördeki. models modülünün dikkate alınması için models klasörüne __init__.py adlı bir dosya eklemeniz gerekir. __init__.py'da, yourapp.models'da doğrudan istediğiniz isimleri koymak için from ... import ... kullanın, aksi halde bunları yourapp.models.base_model olarak ya da kullandığınız alt modül adı olarak almanız gerekir. Ayrıca, her modelde, modellerin uygulamanızın bir parçası olarak tanındığından emin olmak için app_label = 'yourapp' adlı Meta özniteliğini eklemeniz gerekecektir.

0

böyle model dosyası ayırabilirsiniz:
------- modeller/
--------- ----- init .py
-------------- usermodels.py
--------------othermodel.py

init .py:
--------------- usermodels'ten içe aktarma *
--------------- diğer modelden içe aktarma *
ve * modellerinde. py, META sınıfını ekleyin:
-------- sınıf Meta:
-------------- app_label = alt çizgi 'AppName'

İlgili konular