(最終更新月:2021年10月)
現在、Djangoフレームワークにて日報アプリ開発中です
モデルクラスのフィールドを追加し、マイグレーションを実行した際、
django.db.utils.OperationalError: no such column: nippo_nippomodel.date
とエラーが発生してしまいました
試行錯誤の末、解決策を見つけましたので、
- 「django.db.utils.OperationalError」を解決する方法
として備忘録を兼ねて記事とします
解決策
こちらのエラーの原因は「views.py」にあります
当アプリで発生したエラーの原因は、views.pyで新たにインポートした「filterクラス」と、filterクラスについて記述しているNippoListView内のget_context_data内にありました
対象の箇所をすべてコメントアウトし、下記のとおりとなりました
# from .filters import NippoModelFilter
class ...
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
# ctx["filter"] = NippoModelFilter(self.request.GET, queryset=self.get_queryset())
return ctx
マイグレーションを行うといかがでしょうか?
詳しくはよくわかっておりませんが、「views.py」がマイグレーション前の新たに追加したフィールドを認識してしまうために起こっているのだとに考えられます
外部ファイルからのインポートで、新たに追加したフィールドやモデルクラスに関係するものを全てコメントアウトする必要があります
そのうえでマイグレーションを行うと、「マイグレーション前の存在しないフィールドを探す」というエラーの原因となっている行為を防ぐことができました
さいごに
当記事で解説している「OperationalError」は、日報アプリの開発中に発生したエラーです
「解決策を見てもいまいちピンとこない」や、「自分もアプリ開発をしてみたい!」という方はこちらからぜひアプリの開発からWebで公開するまで、を学んでいきましょう!