我需要使用类似get_or_create()的东西,但问题是我有很多字段而且我不想设置默认值(无论如何都没有意义),如果我没有设置默认值它会返回一个错误,因为它会立即保存对象。
我可以将字段设置为null = True,但我不想要空字段。
是否有任何其他方法或任何可以发送到get_or_create()的额外参数,以便它实例化一个对象,但在我调用save()之前不保存它?
感谢。
答案 0 :(得分:37)
你可以这样做:
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
所做的,没有提交。