mizzsugar’s blog

Pythonで学んだことや読書録を書きます。

add_error(field, error)で「Pythonではfieldじゃなくてattributeじゃないの!?」と慌てた話

Djangoドキュメントを読んで慌てたけれども、ドキュメントは間違えていなかったという話です。

add_errorとは

エラーを引数にもつフォーム型の変数に、エラーを追加する関数です。

混乱

fieldってなんだ!? Pythonでは、フィールドのことを attributeというのではないのか!? と焦りました:(;゙゚'ω゚'):

Djangoドキュメントはこう書いていた

The field argument is the name of the field to which the errors should be added.

引用 https://docs.djangoproject.com/en/2.0/ref/forms/api/

引数「field」には、エラーが追加されるフィールドの名前を入れてください

とのこと。

こういうことだった

add_error(field, error)

のfieldは、field型のattributeだった。

たとえば、

add_error(‘password’, error)

こちらは、forms.pyで定義しているクラスの

‘password’ というフィールドを引数にしています。

forms.py

from django import forms

class RegistrationForm(forms.Form):
    username = forms.CharField()
    password = forms.CharField() #ここのこと
    email = forms.EmailField()

add_error(password, error)じゃダメなの?

ダメです。

というのも、 fieldという引数をpasswordという名前の引数に変えたので別物 になってしまうからです。