Django 備忘
ナビゲーションに移動
検索に移動
目次
Django 備忘
Model と Form
Form から Model のインスタンスを保存せずに取得
new_model = form.save(commit=False)
Model インスタンスからFormを生成
form = SampleForm(instance=new_model)
ウィジェットのオーバーライド
class SampleModel(models.Model): sample_field = CharField(max_length=10)
class CocomoForm(ModelForm): sample_field = CharField(widget=TextInput(attrs={'readonly':'readonly'})) class Meta: model = Cocomo
バリデーション処理の呼び出し順
- フィールドクラスの clean() メソッド
- フォームクラスの clean_{fieldname}() メソッド。{fieldname} はフィールド名
- フォームクラスの clean() メソッド
フィールドに依存しないエラー
- Form の clean() メソッド内でハンドリングしたようなフィールドに依存しないエラーは、forms.non_field_errors()で取得できる
- フォーム定義
class CocomoForm(Form): def clean(self): f1 = self.cleaned_data['f1'] try: f1 = float(f1) if f1 == 0.0: raise forms.ValidationError('フィールド 1 は 0 以外の値を設定') return self.cleaned_data
- テンプレート側
テンプレート:Form.non field errors
Textarea Widgetに行列を指定する
from django.forms import * class HogeForm(Form): data = CharField(widget=Textarea(attrs = dict(rows='40', cols='50')))
設定
DJANGO_SETTINGS_MODULE
© 2006 矢木浩人