当使用Django的get_or_create()时,当created = True时,有没有办法 使它创建一个对象而不将其保存到DB?
我想获取新创建的对象,进行一些验证测试,以及 只有在通过所有测试时才将其保存到DB。
答案 0 :(得分:11)
为什么不创建一个名为get_or_new()的新的@classmethod(或使用自定义管理器),然后只在你想要的时候执行save(),而不是试图让get_or_create变成一些东西?
答案 1 :(得分:1)
为什么不覆盖模型的保存方法,让它在那里进行测试?然后,您不必确保每次都使用正确的创建方法。
class MyModel(Model)
def save(self):
self.run_presave_tests()
if self.passed_tests:
super(MyModel, self).save()