djangoのviews.pyでデータベース参照すると(関数名) missing 1 required positional argument: 'self'が出る
models.pyの関数を使った
djangoでアプリ開発をしているとき、models.pyに特定のデータベースにある文字列を返す関数を作った。それをviews.pyで参照してサイトに出力しようとした結果、まさかの上記のエラーがでた。
調べたところ、けっこう忘れがちなミスだったので記事に残す。
クラスを呼び出す際はインスタンス化しなければならない
models.pyにあるUserクラスのget_name()をviews.pyで使う時に通常であれば、
from .models import User mainUser = User(); print(mainUser.get_name())
となる。これはしっかりインスタンス化されているので問題なかった。
しかし、objects.filter()等で呼び出す際に簡潔にまとめようとして、
objects.filter(name=User.get_name())
としたらエラーとなった。
昔やった授業を思い出した
考えてみれば当たり前であるが、エラーが出た時はまったく気が付かなかった。 高専一年生の時にやった授業を思い出した。クラスとインスタンスを理解していなかったが、少しは理解できたと思う。