我試圖通過檢查對象是否在這些對象的列表中來過濾查詢集。Django按模型對象列表過濾
employee_list = [<Employee: A>, <Employee: B>, <Employee: C>]
qs = Employee.objects.filter(id__in=employee_list, [other_filters])
在上面運行之後,qs是一個空列表。我在想,我可以做一個新的列表,如
employee_ids = [emp.id for emp in employee_list]
qs = Employee.objects.filter(id__in=employee_ids, [other_filters])
我沒有做過標杆這種方法,但我想可能性能會受到打擊。或者,我可以在之後交叉清單,例如:
qs = Employee.objects.filter([other_filters])
filtered_qs = [emp for emp in employee_lids if emp in qs]
但是,我認爲這樣的表現會更糟糕。
什麼是最好的/最快的方式來做到這一點?謝謝。
我對每種不同的方法都運行了一個分析器,但沒有看到它們之間的太多差別。我的測試數據集顯然比生產要小,但是從對象列表中構建一個id列表,然後在id_list中過濾id__似乎是最快的。 – SirDeimos