0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Django3のmakemigrationsの小技

Last updated at Posted at 2021-05-07

#概要
今、開発しているdjangoのprojectのmigration時に、models.pyのコートを書いては消し、としているので、よくデータベースを消すはめになります:frowning2:
そこで、自分で調べてみて、簡単にmigrationの変更を削除、更新できるようにしたいと考え、忘備録として記していこうと思います。また私の環境で
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
と書いたら、Djangoを再インストールするハメになったので。このコマンドは使わないようにします:angel:

#開発環境
django==3.2.1
python==3.9.1
データベース==MySQL

#きっかけ
今回、私はaccountsというアプリケーションの中のmodelsに、UserというAbstractBaseUserをオーバーライドさせたmodelsを作成したのですが、primary_keyを設定して、makemigrationsしてしまったので、こんなのがターミナルに毎回出てきてしまいます。
WARNINGS: accounts.User: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
これを消すために、migrateして、データベースに保存されてしまったprimary_keyの値をなかったことにしたいと思います。

#migrateのコマンドまとめ

makemigrations

python manage.py makemigrations (アプリケーション名)
 
migrate

python manage.py migrate (アプリケーション名)

migrationした時のnameを変更

python manage.py makemigrations --name (付けたい名前)

migrateの履歴を見る

python manage.py showmigrations (アプリケーション名)
[ ]=migrateしてない
[ X ]=migrate済み

migrateの巻き戻し

python manage.py migrate (ファイル名)
ファイル名というのは0001や0002から始まるファイルを指しています。
指定したファイル名の直前まで、巻き戻すことになります。

migrateを全てやり直し

python manage.py migrate (アプリケーション名) zero

履歴からも削除

migrationファイルを削除

#私の場合
python manage.py showmigrations accounts
結果
accounts [X] 0001_initial
[]の中のXはmigrateした際に、表示されます。(makemigrations時には空のままです。)
migrate時にデータベースの方にmodelが保存されるようです。つまり、このXが消えれば、データベースの変更がなくなるらしい:v:。なので、次のコマンドを使って、migrateをなかったことにしてみます。
python manage.py migrate accounts zero
結果
accounts [ ] 0001_initial
となりました。
これを完全に消すためには、アプリケーション内のmigrationsと__pychahe__の中にある0001から始まるファイルを消します。
この後、使っていたデータベースも削除して、makemigrations,migrateを行いましたが、warningは消えませんでした。。。
とりあえず、errorにはなっていないので、このまま進めていこうと思います。
このwarningについて、知見のある方は連絡をしていただけると助かります。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?