簡體   English   中英

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

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM