やりたい事
マイグレーションとデータベースを完全にリセットし、プロジェクトを最初に作成した時のようにmakemigrationsとmigrateを実行したい。
アプリ名を指定しないとmakemigrationsで『No changes detected』になってしまう。
データベースを完全にクリアして各アプリケーション内のmigrationsディレクトリを丸ごと削除し__pycache__も削除したが、makemigrationsを実行するとNo changes detectedと出力される。もちろん、ここでアプリ名を指定してmakemigrationsを実行すると正常にマイグレーションファイルは作成される。
python ./manage.py makemigrations appname
原因
そもそもmigrationsディレクトリと内包する__init__.pyを削除してはいけなかった。
解決
migrationsディレクトリ内の__init__.pyファイル以外を削除するか、ディレクトリごと削除してからmigrationsディレクトリと__init__.pyを作成する事で解決。
rm appname/migrations/*.py
rm appname/migrations/__pycache__/*.pyc
touch appname/migrations/__init__.py
# 私のDBはMySQLです。
cat <<__END_DDL__ | mysql -uroot
DROP DATABASE appname;
CREATE DATABASE appname;
__END_DDL__
python ./manage.py makemigrations
python ./manage.py migrate