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
- テンプレート側
Textarea Widgetに行列を指定する
- from django.forms import *
- class HogeForm(Form):
- data = CharField(widget=Textarea(attrs = dict(rows='40', cols='50')))
設定
DJANGO_SETTINGS_MODULE
© 2006 矢木浩人