[英]Django model manager objects.create where is the documentation?
我總是讀到我應該使用的
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
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而失敗,因為主鍵必須是唯一的。 如果您使用手動主鍵,請准備好處理異常。
它位於“QuerySet API參考”頁面中,從文檔索引鏈接。
創造基本上是一樣的。 下面是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
它創建一個實例,然后保存它。
基本上,這兩種方法是等價的 。 Model.objects.create
的使用可能是首選,因為它更適合Django的風格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.