8

現在、私のモデルはすべてmodels.pyにあります。とてもぐちゃぐちゃになってます。base_models.py触れたくないメインモデルをそこに置くために、別のファイルを用意できますか

ビューの場合も同じで、新しいアプリを開発するのではなく、別のフォルダーに入れます

4

5 に答える 5

11

はい、可能です。ただし、特にきれいではありません。

モデルをモジュールにするため、ディレクトリ構造は次のようになります。

- 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'
于 2012-12-05T08:21:35.640 に答える
2

acjohnson55 が言ったことすべてに加えて、各モデルの Meta クラスで app_label 属性を指定する必要があるという事実。

github の実際の例へのリンク: https://github.com/stefanfoulis/django-filer/tree/develop/filer/models

于 2012-12-05T08:25:52.360 に答える
0

次のようにモデルファイルを分離できます:
------- models /
-------------- init .py
-------------- usermodels .py
-------------- othermodel.py

init .py:
--------------- from usermodels import * ---------------
from othermodelimport*
および*models。 py、METAクラスを追加:
-------- class Meta:
-------------- app_label ='appName'

于 2012-12-05T08:25:53.353 に答える
0

はい、という名前のフォルダーを作成しmodels、そのフォルダーに分離したすべてのモデル ファイルを配置します。モジュールと見なされる__init__.pyには、フォルダーに呼び出されたファイルを配置する必要があります。では、使用したい名前を で直接使用できます。それ以外の場合は、 としてインポートするか、使用するサブモジュール名を指定する必要があります。modelsmodels__init__.pyfrom ... import ...yourapp.modelsyourapp.models.base_model

また、各モデルで、app_label = 'yourapp'モデルがアプリの一部として認識されるようにするために呼び出される Meta 属性を追加する必要があります。

于 2012-12-05T08:23:11.233 に答える