現在、私のモデルはすべてmodels.pyにあります。とてもぐちゃぐちゃになってます。base_models.py
触れたくないメインモデルをそこに置くために、別のファイルを用意できますか
ビューの場合も同じで、新しいアプリを開発するのではなく、別のフォルダーに入れます
現在、私のモデルはすべてmodels.pyにあります。とてもぐちゃぐちゃになってます。base_models.py
触れたくないメインモデルをそこに置くために、別のファイルを用意できますか
ビューの場合も同じで、新しいアプリを開発するのではなく、別のフォルダーに入れます
はい、可能です。ただし、特にきれいではありません。
モデルをモジュールにするため、ディレクトリ構造は次のようになります。
- models
|- __init__.py
|- some_model.py
|- some_other_model.py
|- ...
今、魔法__init__.py
がモデルにあり、いくつかの小さな追加機能があります. __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'
acjohnson55 が言ったことすべてに加えて、各モデルの Meta クラスで app_label 属性を指定する必要があるという事実。
github の実際の例へのリンク: https://github.com/stefanfoulis/django-filer/tree/develop/filer/models
次のようにモデルファイルを分離できます:
------- models /
-------------- init .py
-------------- usermodels .py
-------------- othermodel.py
init .py:
--------------- from usermodels import * ---------------
from othermodelimport*
および*models。 py、METAクラスを追加:
-------- class Meta:
-------------- app_label ='appName'
はい、という名前のフォルダーを作成しmodels
、そのフォルダーに分離したすべてのモデル ファイルを配置します。モジュールと見なされる__init__.py
には、フォルダーに呼び出されたファイルを配置する必要があります。では、使用したい名前を で直接使用できます。それ以外の場合は、 としてインポートするか、使用するサブモジュール名を指定する必要があります。models
models
__init__.py
from ... import ...
yourapp.models
yourapp.models.base_model
また、各モデルで、app_label = 'yourapp'
モデルがアプリの一部として認識されるようにするために呼び出される Meta 属性を追加する必要があります。