DjangoのFormメモ

Document
Topic

HTMLを手動で生成する方法 *

Form fields *

requiredはデフォルトではTrue

Formクラスのfieldはbase_fieldsにある *

self.fields = copy.deepcopy(self.base_fields)

CharFieldのstripパラメーターをFalseにしないと入力値の前後のスペースを削除する *

サブクラスが継承もとのfieldを無効にしたい場合はそのNoneを代入する

class FooForm(BarForm):
    bar = None // BarFormのbar fieldを無効

値を変更したい場合、is_valid()前ならform.fields[field_name].initial

後ならform.cleaned_data[field_name]を変更する

widgetでコントロールを指定する

コントロールのHTML要素の属性はattrsで指定する

ファイルをアップロードする方法(FileField) *

フォームのすべてのエラーメッセージを表示する *

    for field, errors in form.errors.items():
        for error in errors:
            print(error)

Fieldのリストはbase_fieldsにある
それをFormのインスタンスごとにコピーしている

self.fields = copy.deepcopy(self.base_fields)

Formのerror_messagesを属性を使って動的に生成 *

Form Class *

class Foo(ModelForm):
    def __init__(self, *args, **kwd):
        super(Foo, self).__init__(*args, **kwd)
        self.fields["bar"].required = False

Djangoメモ