「Django 備忘」の版間の差分
ナビゲーションに移動
検索に移動
1行目: | 1行目: | ||
− | ==Django 備忘== | + | ==[[Django 備忘]]== |
[[Django]] | [[Python]] | | [[Django]] | [[Python]] | | ||
===Model と Form=== | ===Model と Form=== | ||
41行目: | 41行目: | ||
===設定=== | ===設定=== | ||
====DJANGO_SETTINGS_MODULE==== | ====DJANGO_SETTINGS_MODULE==== | ||
− | *どの設定を使っているのかを Django に教る必要があり、環境変数 DJANGO_SETTINGS_MODULE を使う。 | + | *どの設定を使っているのかを [[Django]] に教る必要があり、環境変数 DJANGO_SETTINGS_MODULE を使う。 |
− | *DJANGO_SETTINGS_MODULE は Python のモジュールパス構文、たとえば mysite.settings のようにする。 | + | *DJANGO_SETTINGS_MODULE は [[Python]] のモジュールパス構文、たとえば mysite.settings のようにする。 |
− | *設定モジュールは Python の モジュール検索パスにある必要がある。 | + | *設定モジュールは [[Python]] の モジュール検索パスにある必要がある。 |
2020年2月16日 (日) 04:24時点における最新版
目次
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 矢木浩人