我正在我的端點中進行一些過濾,并且只有在過濾的查詢集超過 30 個專案時才應用其中一個過濾器。
yesterday_date = timezone.now() - timezone.timedelta(days=1)
if query_dict.get("active"):
active_query = cleaned_query.filter(created_at__gt=yesterday_date)
if active_query.count() > 30:
cleaned_query = active_query
else:
cleaned_query = cleaned_query[:30]
我的疑問是,.count() 方法是否已經評估并快取了查詢集,還是我應該使用 len(queryset) 來避免另一個資料庫命中,以防它大于 30?
uj5u.com熱心網友回復:
如果您查看有關何時評估查詢集的 django 檔案
你會看到一些關于計數的資訊......
注意:如果您只需要確定集合中的記錄數(而不需要實際物件),使用 SQL 的 SELECT COUNT(*) 在資料庫級別處理計數會更有效。正是出于這個原因,Django 提供了一個 count() 方法。
所以 acount()不會評估集合,而 alen()會。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/378546.html
標籤:Python 姜戈 PostgreSQL的 django-orm
