Django がフォームを自動的に生成したいので、テンプレートでフォームを生成する必要がないことは理解していますし、多くの人がそれをクールだと思っていることも理解しています。
しかし、私には特定の要件があり、自分でフォームを作成する必要があります。ユーザー インターフェイスを使用して送信されたフォームや API リクエストなど、データを解析するための何かが必要なだけです。
ModelForm を使用しようとしましたが、動作させたいように動作しないようです。
私は次のような振る舞いをしたいと思っています:
- 作成/更新しようとしているオブジェクトのモデルを指定する可能性
- 更新の場合にオブジェクトを指定する可能性
- 辞書に新しいデータを提供する可能性
- 新しいオブジェクトを作成している場合、データ内の不足しているフィールドは、モデル定義で指定されているデフォルト値に置き換える必要があります
- 既存のオブジェクトを更新する場合、データ内の不足しているフィールドは、更新しているオブジェクトの現在の値に置き換える必要があります。別の言い方をすると、データ ディクショナリにない値を更新しないでください。
- を呼び出す前にデータ検証を実行する必要があり、エラーのあるフィールドとエラーのリストとともに
save()
をスローする必要があります。ValidationError
現在、私はすべてを手動で行うことを好みます:
o = myapp.models.MyModel() # or o = myapp.Models.MyModel.objects.get(pk = data['pk'])
o.field1 = data['field1']
o.field2 = data['field2']
…
o.full_clean()
o.save()
ショートカットがあるといいでしょう:
o = SuperCoolForm(myapp.models.MyModel, data)
o.save()
Djangoがこれに対する解決策を提供しているかどうか知っていますか、それとも私が求めすぎているのでしょうか?
ありがとうございました!