_u = UserDetails.objects.create(first_name='jake',last_name='sullivan')
u.save()
_
UserDetails.objects.create()
とu.save()
は両方とも同じsave()
関数を実行します。違いはなんですか? create()
vs save()
を使用することで追加のチェックや利点はありますか?
同様の質問:
- Djangoでモデルオブジェクトを作成する最良の方法は何ですか?
- Django:トランザクションの観点からのsave()とcreate()の違い
Djangoドキュメンテーションはそれが同じだと言っている 。それはただより便利です 1行でsave()
を作成することもできますが、より冗長で読みにくくなります-create()
で新しいオブジェクトを作成していることは明らかです方法。
create(**kwargs)
オブジェクトを作成し、1ステップですべて保存するための便利なメソッド。したがって:
_p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
_そして:
_p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
_同等です。
_
force_insert
_パラメーターは他の場所に記載されていますが、それはつまり、常に新しいオブジェクトが作成されるということです。通常、これについて心配する必要はありません。ただし、設定した手動主キー値がモデルに含まれていて、その値がすでにデータベースに存在する場合、主キーは一意である必要があるため、create()
の呼び出しはIntegrityError
で失敗します。手動主キーを使用している場合は、例外を処理する準備をしてください。