Python add()和create()函数的区别以及save()方法的函数性

Python add()和create()函数的区别以及save()方法的函数性,python,django,Python,Django,我一直试图通过django文档来理解.add()和.create()函数之间的区别。 据我所知: add()。 create函数将创建对象的实例并保存它 我的疑问是: 储蓄究竟是什么?如果只创建一个实例而不保存它,这意味着什么 add()和create()函数之间的主要区别是什么 下面是简短的回答: 储蓄究竟是什么?如果只创建一个实例而不保存它,这意味着什么 在某些情况下,确实要创建一个实例。它以以下两种方式之一工作: 如果记录主键设置为一个值(即,其他值,然后为None或空字符串),Djang

我一直试图通过django文档来理解
.add()
.create()
函数之间的区别。 据我所知:

add()。
create
函数将创建对象的实例并保存它

我的疑问是:

  • 储蓄究竟是什么?如果只创建一个实例而不保存它,这意味着什么
  • add()
    create()
    函数之间的主要区别是什么

  • 下面是简短的回答:

    储蓄究竟是什么?如果只创建一个实例而不保存它,这意味着什么

    在某些情况下,确实要创建一个实例。它以以下两种方式之一工作:

  • 如果记录主键设置为一个值(即,其他值,然后为None或空字符串),Django将执行更新
  • 如果未设置对象的主键,或者更新没有更新任何内容,Django将执行插入。 你可以在网上阅读更多
  • add()和create()函数之间的主要区别是什么

    因此,为了简化,
    create()
    使用save方法,并将参数
    force_insert
    设置为True,以强制Django仅使用insert,而不返回执行更新

    方法用于在记录之间创建M2M关系,这与
    create
    稍有不同。当您链接其他记录以使其没有主键时,无法使用它

    那么这个,

    a = Model()
    a.add(other_model_instance)
    
    将引发错误,而此操作:

    a = Model()
    a.save() # or simply Model.objects.create()
    a.add(other_model_instance)
    

    将起作用。

    明白了。如果我对相同的id使用
    .create()
    ,它会在数据库表中创建一个具有相同id的新行吗?只有在您的模型明确允许的情况下,您才能显式设置主键(我假设您的意思是说id)。在这种情况下,您将得到DB错误,如
    IntegrityConstraintViolation
    。在另一种情况下,主键将由Django自动生成。