Django:打电话的区别self.model.save()和保存模型.self(*args,**kwargs)

2024-04-25 18:01:44 发布

您现在位置:Python中文网/ 问答频道 /正文

调用模型的save有什么区别吗

self.model.save(*args,**kwargs)

以及:

self.model.save()


Tags: 模型selfmodelsaveargskwargs区别
1条回答
网友
1楼 · 发布于 2024-04-25 18:01:44

明显的区别在于,在第一种情况下,传递的是位置参数和关键字参数。如果您想知道Model.save()使用什么参数以及它们做什么,最简单的事情就是阅读源代码。然后你会发现:

def save(self, force_insert=False, force_update=False, using=None):
    """
    Saves the current instance. Override this in a subclass if you want to
    control the saving process.

    The 'force_insert' and 'force_update' parameters can be used to insist
    that the "save" must be an SQL insert or update (or equivalent for
    non-SQL backends), respectively. Normally, they should not be set.
    """
    if force_insert and force_update:
        raise ValueError("Cannot force both insert and updating in model saving.")
    self.save_base(using=using, force_insert=force_insert, force_update=force_update)

第三个参数using没有记录,它指定要使用哪个数据库连接(如果有多个数据库连接)。在

长话短说:

  • 当你想保存你的实例(在一个视图或表单或其他任何形式)时,你通常只想让Django来处理所有这些,这样就可以不带参数地调用my_model_instance.save()
  • 当您重写模型类中的save方法时,您确实希望在调用基类save时接受并传递相同的参数,即:

    MyModel类(模型。模型): def save(自身,*参数,**千瓦): 在这里做点什么() 超级(MyModel,self)。节省(*args,**kw) 做些什么别的什么()

相关问题 更多 >