是否可以在同一方法中多次调用保存方法为django模型对象?



比如说,有一个方法创建一个模型对象,并向模型对象字段添加值。

def main_method():
obj, created = ModelA.objects.get_or_create(a="asd", b=1)

一些导入的数据将被附加到相关字段中:

obj.c = "qwe"
obj.d = 2
...
sub_method_1(obj)
sub_method_2(obj)

同时,有2个或更多的子方法创建新的模型对象和链接到主对象作为外键。

def sub_method_1(obj):
obj_new, created = ModelB.objects.get_or_create(...)
obj.e = new_obj
obj.save()
def sub_method_2(obj):
obj_new, created = ModelC.objects.get_or_create(...)
obj.f = new_obj
obj.save()

但是,当子方法完成并返回到主方法时,还有几个保存方法调用可用。

def main_method():
....
obj.g = "ert"
obj.h = 3
obj.save()

这种方法在实践中是OK的,还是应该只有一个保存在主方法的末尾,从子方法返回新对象,并在保存主对象之前将对象分配给外键字段?

你能给我一份说明这些方法优缺点的文档吗?

一个更好的选择是使用你所有的方法作为setter,并调用方法save()当你真的完成了实例的工作,或者你真的需要它是存在于数据库。

当然,取决于您的工作情况,但通常是更好的选择:)

最新更新