代码之家  ›  专栏  ›  技术社区  ›  Asara

imageField.save()和add()是否在django中保存整个模型?

  •  0
  • Asara  · 技术社区  · 6 年前

    我刚刚经历了 model.save() 命令是不必要的,因为很明显,这已经由 image.save() 还有 childs.add()

    model = Model()
    child = Child()
    model.name = 'Test'
    model.image.save(file)
    model.childs.add(child)
    model.save() # is not necessary
    

    image.save() 方法不仅移动/上传图像文件,而且将整个模型保存到数据库中。同样的情况似乎也发生在 ,因为此信息也会在不调用 model.save()

    model.save()

    1 回复  |  直到 6 年前
        1
  •  1
  •   Håken Lid    6 年前

    这是有据可查的。文档中甚至有一个突出的警告。

    这个类的两个方法save()和delete(),默认为保存

    默认情况下 FileField.save() (ImageField从中继承)将文件保存到文件存储和模型实例。这确保了数据库的状态和文件存储的状态是一致的。您可以使用命名参数来重写它 save=False 方法。

    RelatedManager.add() 不保存模型实例。但是它会更新数据库中的关系,在另一个模型中,该关系表示为外键或中间连接表。如果对实例中的其他字段进行了更改,则必须使用 save()