可以在 django 模型对象的同一方法中多次调用 save 方法吗?
发布于2022-05-07 23:50
阅读(1050)
评论(0)
点赞(18)
收藏(3)
比如说,有一种方法创建一个模型对象并将值添加到模型对象字段。
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()
这种方法在实践中是否可行,或者在主方法的末尾应该只有一个保存,从子方法返回新对象并在保存主对象之前将对象分配给外键字段?
请您给我一份有关这些方法优缺点的文档吗?
解决方案
更好的选择是将所有方法用作setter ,并在您真正完成使用实例时调用方法save()或者您确实需要数据库中存在的方法。
当然,取决于您的工作情况,但通常是更好的选择:)
站长简介:高级工程师,爱好交友,无偿辅导python和前端,技术交流,面试指导,找工作指导,瞎聊都可加我微信i88811i哈,欢迎欢迎!也欢迎加入程序员交流群,专属程序员的圈子,加我微信拉你进群
欢迎关注我的公众号:程序员总部,关注公众号回复python,免费领取 全套python视频教程,关注公众号回复充值+你的账号,免费为您充值1000积分
所属网站分类:
技术文章 >
问答