2012-05-20 21 views
0

我已經實現了ManyToMany關係,該關係允許重複項目,如Way to allow for duplicate many-to-many entries in Python/Django。我也有一個表單,它爲此關係使用ModelMultipleChoiceField,爲了驗證來自ajax請求的數據,但在形式爲is_valid()調用後,ModelMultipleChoiceField中的任何重複項都被刪除。有沒有辦法保留重複項目(我對錶單不感興趣,因爲我沒有在網頁中使用它),還是必須在表單驗證之後手動檢查request.POST數據?如何在ModelMultipleChoiceField中允許重複的值

回答

0

ModelMultipleChoiceField在它內部使用一個查詢集,所以每個項目只出現一次(只要你在數據庫查詢中不使用join的數據庫查詢,但它對這個問題仍然沒有任何問題)。您可以嘗試使用簡單的MultipleChoiceField和構造choices手動複製必要的值。

+0

我考慮過使用MultipleChoiceField,但我不知道哪些值將被多次使用。即使我事先知道這些值,也必須有超過5000個選擇,這聽起來不像每次發出請求時從數據庫中取出它們的好主意。 – konikos

+0

但是,當您構建表單時,您已經發布了數據,因此您可以過濾所有對象並構建僅包含所需數據的選擇。有點愚蠢,但它應該工作:) – ilvar