2012-05-29 125 views
3

如果我使用bulk_create插入對象:從django bulk_create中選擇/查詢對象?

objList = [a, b, c,] #none are saved 
model.objects.bulk_create(objList) 

對象的ID的將不會被更新(見https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-create)。 所以我不能使用這些傢伙作爲外鍵對象。我想在批量創建後從數據庫中查詢它們,然後將它們用作外鍵對象,但我沒有它們的ID來查詢它們。如何從數據庫中查詢這些對象(假設在id以外的列中可能有重複值)?或者是否有更好的方法將批量創建的項目作爲外鍵?

回答

1

如果您只有三個對象,如您的示例中所示,您可能需要單獨調用save,如果它需要是原子的,則將調用封裝在事務中。

如果還有更多的,這可能是使用bulk_create的原因,你可以循環使用它們,並調用每個保存。同樣,如果需要,您可以將其包裝在交易中。雖然,可能不喜歡這個選項,因爲運行大量的插入查詢可能會成爲某些數據庫設置的問題。

另外,黑客可能會將一些已知的唯一標識符添加到對象,以便保存後可以重新查詢這些標識符。