2017-07-30 59 views
0

比方說,我給出了一個我要在其上執行操作的模型實例的主鍵列表(例如delete())。我可以這樣做:如何在過濾的django ORM查詢中檢查錯誤的主鍵參數?

Widgets.objects.filter(pk__in=keys).delete() 

不過,我不知道是否有在keys錯誤的PKS,不會被抓的過濾器。

在執行操作之前檢查所有pks是否合法的最有效方法是什麼? len(keys) == Widgets.objects.filter(pk__in=keys).count()

回答

0

delete返回的元組的第一個參數是刪除的行數。您可以將它與鍵列表的長度進行比較。

+0

任何方式*在*實際調用delete()之前?如果其中一個pks錯誤,我試圖返回404,而不嘗試執行操作。 – Escher

+0

您在問題中提出的建議可以正常工作。 –

+0

另一種方法是啓動一個事務,如果刪除的行數不匹配,則返回+ 404,否則提交。這隻會運行一次查詢。 這仍然是「試圖執行操作」,但可能會好嗎,無論? – Grollicus