【发布时间】:2014-03-26 23:53:51
【问题描述】:
我有一个很长的表单集显示在页面上。它目前是这样保存的:
if request.method == 'POST':
survey_formset = SurveyFormset(request.POST)
if survey_formset.is_valid():
ss = SurveySet()
ss.user=request.user
ss.save()
for form in survey_formset.forms:
saved = form.save(commit=False)
saved.surveyset = ss
saved.save()
return HttpResponseRedirect('/')
我怎样才能让整个调查集在每次用户填写另一个输入时保存在后台?
到目前为止,这就是我迄今为止所拥有的。如何使用回调通过 AJAX 向服务器发送内容?
<form action="" method="POST" id="surveyset">{% csrf_token %}
{{ survey_formset.management_form|crispy }}
<!-- A lot of inputs! -->
{% for form in survey_formset.forms %}
<hr>
<div id="survey-{{ forloop.counter }}" class='content'>
{% crispy form %}
</div>
{% endfor %}
<input id='save_set' type="submit" value="Submit" class='button' />
</form>
<!-- Time to autosave! -->
<script type="text/javascript" src="{% static "js/jquery.autosave.js" %}"></script>
<script>
$(document).ready( function() {
$("form").autosave({
callbacks: {
trigger: ["change", function() {
var self = this;
$("#save_set").click(function() {
self.save();
});
}],
save: {
method: "ajax",
// What do I tell the django view?
// How do I silently save in the background?
options: {
success: function() {
console.log("saved!");
}
}
}
}
});
});
</script>
我正在使用这个家伙的代码:
【问题讨论】:
-
您可能正在考虑保存表单的子集。更多信息在这里docs.djangoproject.com/en/1.7/topics/forms/modelforms/…
-
我想我想在这里添加几行:
save: { method: "ajax", options: { success: function() { console.log("saved!"); } } }让我的所有 POST 数据都由后台视图处理。但我只想创建一个新的调查集。 -
那是你想保存用户输入的所有数据吗?如果是这样,则可以使用 save commit=False 来保存部分模型
-
我正在使用 commit=False... 我要做的是修改模板中的视图和 javascript 以使用 ajax 在后台相互交谈。
-
啊,你需要在你的保存方法中输入URL。 url:"/path/to/view"