程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

可以在 django 模型对象的同一方法中多次调用 save 方法吗?

发布于2022-05-07 23:50     阅读(1219)     评论(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()或者您确实需要数据库中存在的方法。

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



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1489052/8b273d8416aaf1286ec6/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)