1. ホーム
  2. django

[解決済み] Django における cleaned_data の用途は?

2022-02-18 14:03:45

質問

Djangoは、もし form.is_valid()True . form.cleaned_data は、すべての検証済みフィールドが格納される場所です。しかし、私は cleaned_data 関数を使用します。

form.cleaned_data['f1'] -- クリーンデータ request.POST.get('f1') -- 未検証のデータ

Djangoでモデルフォームを持っています。

if form1.is_valid():
    form1.save()

cleaned_dataをモデルに保存するのか、それともunvalidated dataを保存するのか。

form2=form1.save(commit=False);

form2 は form1 の cleaned_data か unvalidated data を含んでいるか。

あらゆる日付をpythonのdatetimeオブジェクトに変換する以外に、cleaned_dataとunvalidated dataを使用する利点の良い例はありますか? ありがとうございます。

どのように解決するのですか?

2つの状況:基本的な使用 フォーム (forms.Form)と モデルフォーム (forms.ModelForm)を使用します。

モデルフォームを使用しているのであれば、わざわざ cleaned_data ディクショナリを作成する際に form.save() はすでにマッチングされ、きれいなデータが保存されています。しかし、Basic Form を使っている場合、それぞれの cleaned_data のインスタンスをデータベースの場所に保存し、フォームではなくデータベースに保存します。

例えば 基本フォーム :

if form.is_valid():
    ex = Example()
    ex.username = form.cleaned_data['username']
    ex.save()

例えば モデルフォーム :

if form.is_valid():
    form.save()

NOTE からのフォームパスの場合 is_valid() ステージでは、検証されていないデータは存在しません。