DjangoでModelに設定したmax_lengthの値をFormのmax_lengthに指定する
ModelFormを使えば、何もしなくても設定されるはずだけど、明示的にFormFieldを指定しなおしている場合とか、forms.Formを使ってる場合とかは、max_lengthを2箇所に書くことになってしまう。
解決方法を調べてたら、Model側のmax_lengthの値を取得してFormFieldに渡す方法が見つかった。
from models import * class MyForm(forms.Form): some_field = forms.CharField(label='Some Field', max_length=SomeModel._meta.get_field('some_field').max_length)
FormFieldのmax_lengthを指定しておくと、テンプレートでfieldを表示するときにちゃんとmaxlength属性がつくようになる。
参考 : Django: model maxlength and form maxlength - Stack Overflow