39

get_or_create() のようなものを使用する必要がありますが、問題は、多くのフィールドがあり、デフォルトを設定したくないことです (とにかく意味がありません)。デフォルトを設定しないと、どうやらオブジェクトをすぐに保存するためです。

フィールドを null=True に設定できますが、null フィールドは必要ありません。

オブジェクトをインスタンス化するが、save() を呼び出すまで保存しないように get_or_create() に送信できる他のメソッドまたは追加のパラメーターはありますか?

ありがとう。

4

1 に答える 1

39

あなたはただ行うことができます:

try:
    obj = Model.objects.get(**kwargs)
except Model.DoesNotExist:
    obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k))

これはget_or_create、sans commit が行うこととほとんど同じです。

于 2009-07-08T01:29:09.260 に答える