Djangoのmodelでマイグレーション後に変数名を変えるときのエラーがでたときの解決できるかもしれない方法
- アーティスト: O.S.T.
- 出版社/メーカー: Universal
- 発売日: 2017/04/07
- メディア: CD
- この商品を含むブログを見る
Djangoのmodelでマイグレーション後に変数のつづりミスに気づく
ありますよね^^ 例えば"pubdate" って書きたかったのに "puddate"って書いちゃった・・・ これそのままにするとクエリに関するコードを書くたびにpuddate = ・・・みたいにかっこ悪いのと、エラー増加の温床になるので、解決したいですよね。
models.py
class Example(models.Model): puddate = models.DateTimeField(auto_now_add=True)
[書き替えます]models.py
class Example(models.Model): pubdate = models.DateTimeField(auto_now_add=True)
ここでマイグレーションしてもModelしかいじらなければエラーでません。でも、makemigrations時にこういうエラーに出くわすことがあります。
$python manage.py makemigrations SystemCheckError: System check identified some issues: ERRORS: <class '****.admin.****Admin'>: (admin.E108) The value of 'list_display[3]' refers to 'puddate', which is not a callable, an attribute of '****Admin', or an attribute or method on '****.****'.
あれれ・・・
解決策
Adminの書き換えを忘れたからマッチしてないよということです。なのでadmin.pyもpuddate→pubdateに書き換えてからマイグレーションすると
$python manage.py makemigrations Did you rename ****.puddate to ****.pubdate (a DateTimeField)? [y/N] y
と、出てきて普通通りリネームできます。直ります。