Jquery 提交的django表单何时实际保存到数据库?

Jquery 提交的django表单何时实际保存到数据库?,jquery,django,Jquery,Django,我问这个问题是因为我已经实现了一个javascript解决方案(感觉有点像黑客,但似乎也是当时最简单最快速的解决方案…),这给了我一些意想不到的结果 jQuery在管理表单中添加了额外的输入部分,而正常表单提交只会忽略这些部分(显然),所以我使用了类似的方式 抱歉,ajaxSubmit()和$(选择器)。ajaxSubmit不同,名称不正确 无论哪种方式,这段代码都会正常提交表单,成功后会执行第二个POST请求,处理jQuery添加的输入。我认为,当jQuery输入需要数据库中尚未创建的内容时,

我问这个问题是因为我已经实现了一个javascript解决方案(感觉有点像黑客,但似乎也是当时最简单最快速的解决方案…),这给了我一些意想不到的结果

jQuery在管理表单中添加了额外的输入部分,而正常表单提交只会忽略这些部分(显然),所以我使用了类似的方式

抱歉,ajaxSubmit()和$(选择器)。ajaxSubmit不同,名称不正确

无论哪种方式,这段代码都会正常提交表单,成功后会执行第二个POST请求,处理jQuery添加的输入。我认为,当jQuery输入需要数据库中尚未创建的内容时,这将防止出现问题。为清楚起见,举一个例子:

用户可以创建节,每个节可以有许多项。如果用户创建了一个新的分区并添加了新的项目,而没有先执行常规表单提交,那么该分区将不在数据库中,因此也无法创建项目

不幸的是,我的解决方案不起作用。即使在ajaxSubmit之后,直到完成所有js代码之后,新的部分才真正记录在数据库中——这让我感到惊讶,也许有人能告诉我为什么?可能只是表单插件不适合此任务


编辑::我的代码中有一个语法错误,这就是它无法工作的原因。。。正如您在上面的代码片段中所看到的,success函数的末尾有一个分号,它打破了一些东西。

您的表单应该包括视图的路径(对于非ajax帖子):

你的看法:

def test(request):
if request.is_ajax():
    name = request.POST.get('message', False)
    m = Message(message=name,user_id=request.user)
    m.save()
else: ...

不完全是。非常适合标准的ajax表单提交-但我的解决方案需要更多。我基本上是一次点击两次表单提交,使事情更加复杂,我没有使用标准的表单按钮,我忘了提到这一点(我使用了链接,这也是为什么一切都感觉很粗糙的另一个原因)。事实证明,它不起作用的原因仅仅是我没有注意到的语法错误。请参阅编辑。尝试序列化要提交的数据,并首先向其发出警报(以确保其正常工作)。然后将其提交到视图并保存到相应的对象。
<form action="/test" method="post" accept-charset="utf-8" id="testform">
$('document').ready(function(){
$("#testform").submit(function(){
    $.ajax({
        type: "POST",
        url: "/test",
        data: $(this).serialize(),
        success: function(data) {
             .....
    });
    $('#testform')[0].reset();
    return false;
}) ...
def test(request):
if request.is_ajax():
    name = request.POST.get('message', False)
    m = Message(message=name,user_id=request.user)
    m.save()
else: ...