1
假設我有:django - 什麼時候.objects.get()評估?
class Library(models.Model):
name = models.CharField(max_length = 100)
class Books(models.Model):
library = models.ForeignKey(Library)
book = models.CharField(max_length = 100)
我想創建一個新的Books
,我們知道我們可以只用Library
的ID填補Books
庫,但我們也可以使用Library
實例。我的問題是,如果我們只提供ID,會更好嗎?如果我想使用該實例,那麼我必須使用.get()
進行評估,然後才能訪問數據庫?
附加問題:從文檔中,queryset是懶惰的,它不會直到被評估纔打到數據庫,所以queryset何時被評估?
請注意,切片未評估的QuerySet通常會返回另一個未評估的QuerySet。 – Alasdair
我相信get也是懶得評價的。在訪問變量之前,您不會訪問數據庫https://docs.djangoproject.com/zh/dev/topics/db/optimization/#understand-cached-attributes – ppetrid
@ppetrid這就是關於查找相關變量的問題。如果您安裝了django調試工具欄,可以非常容易地通過在'debugsqlshell'內調用'get'來立即驗證get' - 您將看到立即生成並執行查詢。 –