2014-07-24 27 views
1

好吧,我一直在試圖弄清楚如何使用窗體編輯數據庫中的對象,該窗體具有要更新的對象的實例。使用窗體和AJAX編輯數據庫中的對象

我希望能夠從同一頁面編輯多個對象,但每個對象都有自己的形式。這就是爲什麼我想使用Ajax來執行請求並刷新頁面而不刷新。

我似乎不能更新模板特別的形式?

這是我的代碼。

查看

@login_required 
def update(request): 
if request.user.id: 
    uid = request.user.id 
    user_Books = Books.objects.filter(user_upload_id = uid) #Gets the users books 
    User = UserProfile.objects.get(pk = uid) 

if request.is_ajax(): 
    Book = user_Books.get(pk = request.POST.get('id')) #querys for the specifc book form ajax id value 
    form = Book_Submit(instance = Book) 

    return render(request, 'Forms/update.html', {'user_Books'user_Books,'form':form }, context_instance=RequestContext(request))  

return render(request, 'Forms/update.html', {'user_Books':user_Books, }, 
    context_instance=RequestContext(request)) 

jQuery的

$('.Book_list').append(function(){ 
    $('#edit', this).click(function(){ 
     var a = $(this).parent().find("p").text() 
     $.ajax({ 
      type: "POST", 
      url: "", 
      data: {"id":a}, 
      success: function(){   
       $('form').load('update.html') 
      }, 
      headers: { 
       'X-CSRFToken': csrftoken 
      } 
     }); 
    }); 
}); 

的Html

<div class="container"> 

     {% for bk in user_Books %} 
      <div class="Book"> 
       <h2 id="title">{{ bk.title }}</h2> 
       <p>{{ bk.id }}</p> 
       <input id="edit" type="button" value="Edit"></input> 

       <div id="form"> 
        <form> 
         {{ form.as_p }} 
        </form> 
       </div> 

      </div> 
     {% endfor %} 

    </div> 

回答

0

我想通了,多一點仔細閱讀文檔可以節省時間。我所做的只是發送一個請求該對象的帖子,然後將該對象作爲一個實例放入該表單中,並返回將該表單呈現給頁面。

您可以使用ajax到$ .post並獲取從帖子返回的數據。

Book = user_Books.objects.get(pk=i) 
updateform = Form(instance=Book) 

return render(request,'Forms/update.html',{ 
    'updateform':updateform, 
     },context_instance=RequestContext(request)) 
相關問題