Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:调用self.model.save()和self.model.save(*args,**kwargs)之间的区别_Python_Django_Orm - Fatal编程技术网

Python Django:调用self.model.save()和self.model.save(*args,**kwargs)之间的区别

Python Django:调用self.model.save()和self.model.save(*args,**kwargs)之间的区别,python,django,orm,Python,Django,Orm,调用模型的save-like之间是否有区别: self.model.save(*args,**kwargs) 以及: self.model.save()。如果您想知道Model.save()需要哪些参数以及它们的作用,最简单的事情就是阅读源代码。然后,您会发现类似于: def save(self, force_insert=False, force_update=False, using=None): """ Saves the current instance. Overrid

调用模型的save-like之间是否有区别:

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

以及:


self.model.save()。如果您想知道
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
,没有文档记录,它指定要使用的db连接(如果有多个db连接)

长话短说:

  • 当您想保存实例(在视图、表单或其他任何形式中)时,您通常只想让Django处理所有这一切,因此可以调用
    my\u model\u instance.save()
    ,而不带参数
  • 在模型类中重写
    save
    方法时,在调用基类
    save
    时,您肯定希望接受并传递相同的参数,即:

    类MyModel(models.Model): def保存(自,*参数,**千瓦): 在这里做点什么 超级(MyModel,self).save(*args,**kw) 做点别的事