🐈
[Django] No changes detected
No changes detectedと言われた
Djangoでマイグレーションファイルを作成するおなじみのコマンド
python manage.py makemigrations app_name
これを実行すると
No changes detected in app 'app_name'
変更がありませんと言われてしまった。。。がっつりモデルいじったのだけど。
[原因] models.pyをmodelsフォルダに置き換えた
クラスごとにファイルを切りたくて、models.pyファイルから、modelsフォルダにモデルファイル入れるスタイルに変えていたのが問題だったみたいです。
[解決策] models/init.pyにimportを追加する
modelsフォルダに__init__.py
を作成して、その中にmodels.Model
を継承した該当のモデルクラスをimportします。
以降は例を出して解説してみます。
フォルダ構成
app_name/models/__init__.py
.
├── app_name
│ ├── models
│ │ ├── __init__.py
│ │ └── product.py
└── その他のDjangoファイル
モデルファイル
この例の説明のためにproductというモデルを用意しています。
app_name/models/product.py
from django.db import models
class Product(models.Model):
id = models.BigAutoField(primary_key=True)
name = models.CharField(max_length=200, null=False, blank=False)
initファイル
このinitファイルの変更が重要です。このinitファイルに該当のモデルをimportします。
makemigrations実行時にはmodels.py
もしくは、このmodels/__init__.py
を見に行くと考えれば良さそうです。
app_name/models/__init__.py
from .product import Product
改めてmakemigrations実行
python manage.py makemigrations app_name
私はこれでうまくマイグレーションファイルを作成できました。
参考
Discussion