【Django】新たなフィールド追加でpsycopg2エラー

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2021年7月)

モデルフィールド書き換え時などに時々起こる、

psycopg2.errors.UndefinedTable: relation "nippo_nippomodel" does not exist

結局データベースを削除するしかない!ということで泣く泣く再設定しなおすことになるのですが、今回、うまくいく方法が見つかりましたので同じ悩みの方のお役に立てれば幸いです!

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間17万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

ズバリ!解決方法

ステップ1

urls.pyでインポートに関する部分をコメントアウト!

エラーメッセージで記されているモデル内のurls.pyへ移動します

views.pyよりインポートしている箇所と、urlpatternsのリストを空にするようコメントアウト(行の最初に「#」)します

【参考例】

from django.urls import path, include

# from .views import (ListFuncView, NippoListView,
#                     nippoDetailView, NippoDetailView,
#                     nippoCreateView, NippoCreateView,
#                     NippoUpdateView,
#                     NippoDeleteView,
#                     nippoUpdateView)

urlpatterns = [
    # path("", NippoListView.as_view(),name="nippo-list"),
    # path("detail/<slug:slug>/", NippoDetailView.as_view(), name="nippo-detail"),
    # path("create/", NippoCreateView.as_view(), name="nippo-create"),
    # path("edit/<slug:slug>/", NippoUpdateView.as_view(), name="nippo-update"),
    # path("delete/<slug:slug>/", NippoDeleteView.as_view(), name="nippo-delete"),
    # path("list/", ListFuncView, name="nippo-func-list"),
    # path("<int:pk>/", nippoDetailView, name="nippo-detail-func"),
    # # path("create/", nippoCreateModelView, name="nippo-create"),
    # path("update/<slug:slug>/", nippoUpdateView, name="nippo-edit"),
    # path("api/", include("nippo.api.urls")),
]

ステップ2

$ python manage.py makemigration

うまくいきましたか?

$ python manage.py migrate

私はこの流れでうまくいきました!皆様はいかがでしょうか?

もしまだうまくいかないという方は、もう一度マイグレーションを実行する前に下記をお試しください!

補足

下記の方法も場合よっては有効です

各app内のmigrationsフォルダのファイルを削除する

migrationsファイル内の__init__.py以外のファイルを全て削除しましょう

そのうえで、再度マイグレーションの事項をしてみてください!

タイトルとURLをコピーしました