0
我試圖從遞歸函數的輸出中獲取單個查詢集,並且遇到了性能問題。django查詢集的批量聯合
基本上,試圖結合個別查詢集的行爲似乎將處理時間加倍(我期待這是因爲實現),但我想知道如果我能更有效地做到這一點。
def intersect(self, list_of_querysets):
combined = list_of_querysets[0]
for queryset in list_of_querysets:
combined = combined | queryset
return [combined]
def _get_template_folders(self, template_folder_list):
"""
:rtype : list
"""
parents = []
for template_folder in template_folder_list:
if not TemplateFolder.objects.filter(pk=template_folder).exists():
continue
templates = TemplateFolder.objects.filter(pk=template_folder)
for template in templates:
parent_folders = self._get_template_folders([template.template_folder_parent_id])
if parent_folders is not None:
parents.extend(parent_folders)
if templates is not None:
parents.append(templates)
if parents:
return parents
else:
return None
template_folders_list = self.intersect(self._get_template_folders(template_folder_list))
這是,我應該提到,get_template_folders是一樣有效,因爲它可以與自己的限制強加。我期望做的是將它與交叉相結合,以加快代碼的重複數據刪除部分,因爲get_template_folders輸出了大量的錯誤。我很喜歡使用類似django-mptt的東西,但不幸的是,我們與另一個已經列出數據庫表的應用程序緊密耦合。我們只是與它接口...謝謝你看看。 – Jharwood 2013-04-24 15:52:24