使用表单和ajax编辑数据库中的对象

时间:2014-07-24 00:50:32

标签: jquery ajax django

好的,所以我一直试图弄清楚如何使用表单来编辑数据库中的对象,该表单包含我想要更新的对象的实例。

我希望能够从同一页面编辑多个对象,但每个对象都有自己的形式。这就是为什么我想使用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>

1 个答案:

答案 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))