Django模型管理器objects.create文档在哪里?

时间:2012-03-30 09:51:02

标签: python django

我总是读到我应该使用

model = Model(a=5, b=6)
model.save()

但我刚看到有一个管理器功能创建,因为我看到了一个使用它的opensource django应用程序。

model = Model.objects.create(a=5, b=6)
print model.pk
1

所以建议使用它吗?或者仍然优选使用.save方法。我猜测objects.create无论如何都会尝试创建它,而如果指定了pk,save可以保存现有对象。

这些是我找到的文档:https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects

4 个答案:

答案 0 :(得分:41)

p = Person.objects.create(first_name="Bruce", last_name="Springsteen")

相当于:

p = Person(first_name="Bruce", last_name="Springsteen") 
p.save(force_insert=True)
  

force_insert表示将始终创建新对象   通常你不需要担心这个。但是,如果你的模型   包含您设置的手动主键值以及该值   已存在于数据库中,对create()的调用将失败   IntegrityError因为主键必须是唯一的。做好准备   如果您使用手动主键,则处理异常。

答案 1 :(得分:34)

它在页面"QuerySet API reference"中,从文档索引链接。

答案 2 :(得分:2)

创造基本上是一样的。下面是create的源代码。

def create(self, **kwargs):
    """
    Creates a new object with the given kwargs, saving it to the database
    and returning the created object.
    """
    obj = self.model(**kwargs)
    self._for_write = True
    obj.save(force_insert=True, using=self.db)
    return obj

它创建一个实例,然后保存它。

答案 3 :(得分:1)

基本上,这两种方法是equivalentModel.objects.create的使用可能是首选,因为它更适合Django的风格。