Django模型pipe理器objects.create文档在哪里?
我总是读我应该使用
model = Model(a=5, b=6) model.save()
但是我刚刚看到有一个pipe理器函数create,因为我看到一个使用它的开源django应用程序。
model = Model.objects.create(a=5, b=6) print model.pk 1
那么是否build议使用它? 还是更喜欢使用.save方法。 我猜object.create会尝试创build它,而不pipe是什么,而保存可能会保存现有的对象,如果指定pk。
这些是我find的文档: https : //docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects
它位于从文档索引链接的“QuerySet API参考”页面中。
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意味着总会创build一个新的对象。
通常你不需要担心这个。 但是,如果您的模型包含您设置的手动主键值,并且该值已经存在于数据库中,则由于主键必须是唯一的,因此对create()的调用将失败并显示IntegrityError。 如果您正在使用手动主键,请准备好处理exception。
基本上这两种方法是等价的 。 Model.objects.create
的使用可能是首选,因为它更适合于Django的风格。
创造本质上是一样的。 下面是创build的源代码。
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
它创build一个实例,然后保存它。