[解決済み] models.pyを複数のファイルに分割する
質問
を分割しようとしています。
models.py
を複数のファイルに分割しようとしています。
最初の推測はこうでした。
myproject/
settings.py
manage.py
urls.py
__init__.py
app1/
views.py
__init__.py
models/
__init__.py
model1.py
model2.py
app2/
views.py
__init__.py
models/
__init__.py
model3.py
model4.py
これはうまくいきません。
この
を見つけましたが、この解決策ではまだ問題があります。
python manage.py sqlall app1
を実行すると、次のようなものが表示されます。
BEGIN;
CREATE TABLE "product_product" (
"id" serial NOT NULL PRIMARY KEY,
"store_id" integer NOT NULL
)
;
-- The following references should be added but depend on non-existent tables:
-- ALTER TABLE "product_product" ADD CONSTRAINT "store_id_refs_id_3e117eef" FOREIGN KEY ("store_id") REFERENCES "store_store" ("id") DEFERRABLE INITIALLY DEFERRED;
CREATE INDEX "product_product_store_id" ON "product_product" ("store_id");
COMMIT;
あまり自信はないのですが、次の部分が気になります。
The following references should be added but depend on non-existent tables:
これは私のmodel1.pyファイルです。
from django.db import models
class Store(models.Model):
class Meta:
app_label = "store"
これは私のmodel3.pyファイルです。
from django.db import models
from store.models import Store
class Product(models.Model):
store = models.ForeignKey(Store)
class Meta:
app_label = "product"
で、どうやらうまくいったようなのですが、コメント欄に
alter table
で、これを試すと同じことが起こります。
class Product(models.Model):
store = models.ForeignKey('store.Store')
class Meta:
app_label = "product"
では、手動でalter for referencesを実行すればいいのでしょうか? これはsouthの問題をもたらすかもしれませんね?
どのように解決するには?
次のようにします。
myproject/
...
app1/
views.py
__init__.py
models.py
submodels/
__init__.py
model1.py
model2.py
app2/
views.py
__init__.py
models.py
submodels/
__init__.py
model3.py
model4.py
次に
#myproject/app1/models.py:
from submodels/model1.py import *
from submodels/model2.py import *
#myproject/app2/models.py:
from submodels/model3.py import *
from submodels/model4.py import *
ただし、特に理由がなければ、model1 と model2 は app1/models.py に、model3 と model4 は app2/models.py に直接記述してください。
---第二部---。
これはapp1/submodels/model1.pyファイルです。
from django.db import models
class Store(models.Model):
class Meta:
app_label = "store"
このようにmodel3.pyを修正します。
from django.db import models
from app1.models import Store
class Product(models.Model):
store = models.ForeignKey(Store)
class Meta:
app_label = "product"
編集したのは、これがまた誰かのために出てきたときのためです。 django-schedule をチェックすると、まさにこれを行うプロジェクトの例があります。 https://github.com/thauber/django-schedule/tree/master/schedule/models https://github.com/thauber/django-schedule/
関連
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] 文字列を複数の単語境界のデリミタで単語に分割する
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み] ヒストグラム Matplotlib
-
[解決済み] Pythonでnumpy.linalg.eigを使用した後の固有値と関連する固有ベクトルのソート
-
[解決済み] python: 2階層上のディレクトリを取得する
-
[解決済み] 標準のjsonモジュールでfloatをフォーマットする
-
[解決済み] pandasのデータフレームでカスタムソートする
-
[解決済み] Pythonのモジュール命名規則
-
[解決済み] 2ウェイ/リバースマップ[重複]について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jupyterノートブックでenv変数を設定する方法
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] ヒストグラム Matplotlib
-
[解決済み] Matplotlibのレジェンドが動作しない
-
[解決済み] Pythonでzip(*[iter(s)]*n)はどのように動作するのですか?
-
[解決済み] Google App EngineのためのFlaskとwebapp2の比較
-
[解決済み] 標準のjsonモジュールでfloatをフォーマットする
-
[解決済み] Seleniumから要素の属性を取得するには?
-
[解決済み] デバッグモードでFlaskが2回初期化されないようにするには?重複
-
[解決済み] Pythonを使ったMicrosoft SQLサーバへの接続