get_or_create() 必须立即保存吗?(Django)
我需要用类似于 get_or_create() 的方法,但问题是我有很多字段,而且我不想设置默认值(其实这些默认值也没有意义)。如果我不设置默认值,就会报错,因为这个方法似乎会立刻保存对象。
我可以把字段设置为 null=True,但我不想要空字段。
有没有其他方法或者额外的参数可以传给 get_or_create(),这样它可以创建一个对象,但在我调用 save() 之前不保存它?
谢谢。
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
的功能,只是没有提交的步骤。