我問這個問題,因爲我已經實施了一個JavaScript解決方案到nested inlines(感覺有點像黑客,但似乎是當時最簡單和最快的解決方案...),這給了我一些意想不到的結果。什麼時候提交的django表單實際保存到數據庫中?
的jQuery增加額外的輸入部分的管理形式,其中正常提交表單會忽略(明顯),所以我用jQuery forms plugin像這樣
function ajaxSubmit(form) {
$(form).ajaxSubmit({
success: function() {
var item_data = $('.item-fields').fieldSerialize();
var post_url = '/admin/menu_generator/' + context + '/' + menu_id + 'items/new/';
$.post(post_url, item_data);
};
});
};
ajaxSubmit會()和$(選擇).ajaxSubmit不同,嚴重命名,我的歉意。
無論哪種方式,該位代碼正常提交表單,並在成功執行處理jQuery添加輸入的第二個POST請求。這,我認爲,將防止當jQuery輸入需要在數據庫中還沒有創建的東西的問題。爲了清楚起見,一個例子:
用戶可以創建部分,每個部分可以有很多項目。如果用戶創建一個新的部分並添加新的項目,而沒有進行正常的表單提交,那麼該部分將不會在數據庫中,因此這些項目也不能創建!
不幸的是,我的解決方案不起作用。即使在ajaxSubmit之後,新的部分在完成所有js代碼之後纔會實際記錄在數據庫中 - 這讓我感到驚訝,也許有人可以啓發我爲什麼?這可能只是表單插件不適合這個任務。
編輯::我的代碼中有一個語法錯誤,這就是爲什麼它不工作......正如你可以在上面的代碼片段中看到的,在成功函數的末尾有一個分號,這是破壞的東西。
不太。完美的標準ajax表單提交 - 但我的解決方案需要更多一點。我基本上只做一次點擊就做兩次表單提交,使事情進一步複雜化,我沒有使用標準的表單按鈕,我忘了提及(我使用了一個鏈接,這是所有事情都覺得非常黑客的另一個原因)。事實證明,它沒有工作是一個簡單的語法錯誤,我沒有注意到。請參閱編輯。 – 2011-02-16 10:57:29