好的,所以我一直试图弄清楚如何使用表单来编辑数据库中的对象,该表单包含我想要更新的对象的实例。
我希望能够从同一页面编辑多个对象,但每个对象都有自己的形式。这就是为什么我想使用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 :(得分: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))