「Django 備忘」の版間の差分
ナビゲーションに移動
検索に移動
(ページの作成:「==Django 備忘== [Django][Python] ===Model と Form=== ====Form から Model のインスタンスを保存せずに取得==== new_model = form.save(commit=False)…」) |
|||
| (同じ利用者による、間の3版が非表示) | |||
| 1行目: | 1行目: | ||
| − | ==Django 備忘== | + | ==[[Django 備忘]]== |
| − | [Django][Python] | + | [[Django]] | [[Python]] | |
===Model と Form=== | ===Model と Form=== | ||
====Form から Model のインスタンスを保存せずに取得==== | ====Form から Model のインスタンスを保存せずに取得==== | ||
| 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
- テンプレート側
テンプレート: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 矢木浩人