有没有办法让Django的get_or_create()创建一个对象而不将其保存到数据库?

时间:2009-12-14 19:23:45

标签: django django-models

当使用Django的get_or_create()时,当created = True时,有没有办法 使它创建一个对象而不将其保存到DB?

我想获取新创建的对象,进行一些验证测试,以及 只有在通过所有测试时才将其保存到DB。

2 个答案:

答案 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()