Javascript Django:数据未提交到数据库,但没有错误
我正在为待办事项列表创建Django应用程序。我使用带有Json的引导模式来插入数据库。但是,当我单击submit按钮时,它表示数据已提交到数据库中,但当我检查数据库时,什么都没有 url.py:Javascript Django:数据未提交到数据库,但没有错误,javascript,python,json,django,Javascript,Python,Json,Django,我正在为待办事项列表创建Django应用程序。我使用带有Json的引导模式来插入数据库。但是,当我单击submit按钮时,它表示数据已提交到数据库中,但当我检查数据库时,什么都没有 url.py: urlpatterns = [ path('', TaskListView.as_view(), name='task_list'), re_path(r'^create/$', views.task_create, name='task_create'), ] @login_req
urlpatterns = [
path('', TaskListView.as_view(), name='task_list'),
re_path(r'^create/$', views.task_create, name='task_create'),
]
@login_required
def task_create(request):
data = dict()
#, data=request.POST
if request.method == 'POST':
form = TaskForm(request.user, data=request.POST)
if form.is_valid():
form.save(commit=False)
data['form_is_valid'] = True
else:
data['form_is_valid'] = False
else:
form = TaskForm(request.user)
context = {'form': form}
data['html_form'] = render_to_string('partial_task_create.html',
context,
request=request
)
return JsonResponse(data)
$("#modal-task").on("submit", ".js-task-create-form", function () {
var form = $(this);
// {% url 'task_create' %} .................
$.ajax({
url: form.attr("action"),
data: form.serialize(),
type: form.attr("method"),
dataType: 'json',
success: function (data) {
if (data.form_is_valid) {
alert("Task created!"); // <-- This is just a placeholder for now for testing
}
else {
$("#modal-task .modal-content").html(data.html_form);
}
}
});
return false;
});
<div class="modal fade" id="modal-task">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
{% load widget_tweaks %}
<form method="post" action="{% url 'task_create' %}" class="js-task-create-form" novalidate>
{% csrf_token %}
<div class="modal-header">
<h4 class="modal-title" style="margin-left:90px;">Create a new Task</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{% for field in form %}
{% if field.id_for_label == "id_is_completed" %}
<div class="form-check{% if field.errors %} has-error{% endif %}">
<label class="form-check-label">
{% render_field field class="form-check-input" %} {{ field.label }}
</label>
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
<br />
{% else %}
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endif %}
{% endfor %}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Create Task</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</form>
视图。py:
urlpatterns = [
path('', TaskListView.as_view(), name='task_list'),
re_path(r'^create/$', views.task_create, name='task_create'),
]
@login_required
def task_create(request):
data = dict()
#, data=request.POST
if request.method == 'POST':
form = TaskForm(request.user, data=request.POST)
if form.is_valid():
form.save(commit=False)
data['form_is_valid'] = True
else:
data['form_is_valid'] = False
else:
form = TaskForm(request.user)
context = {'form': form}
data['html_form'] = render_to_string('partial_task_create.html',
context,
request=request
)
return JsonResponse(data)
$("#modal-task").on("submit", ".js-task-create-form", function () {
var form = $(this);
// {% url 'task_create' %} .................
$.ajax({
url: form.attr("action"),
data: form.serialize(),
type: form.attr("method"),
dataType: 'json',
success: function (data) {
if (data.form_is_valid) {
alert("Task created!"); // <-- This is just a placeholder for now for testing
}
else {
$("#modal-task .modal-content").html(data.html_form);
}
}
});
return false;
});
<div class="modal fade" id="modal-task">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
{% load widget_tweaks %}
<form method="post" action="{% url 'task_create' %}" class="js-task-create-form" novalidate>
{% csrf_token %}
<div class="modal-header">
<h4 class="modal-title" style="margin-left:90px;">Create a new Task</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{% for field in form %}
{% if field.id_for_label == "id_is_completed" %}
<div class="form-check{% if field.errors %} has-error{% endif %}">
<label class="form-check-label">
{% render_field field class="form-check-input" %} {{ field.label }}
</label>
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
<br />
{% else %}
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endif %}
{% endfor %}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Create Task</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</form>
JavaScript:
urlpatterns = [
path('', TaskListView.as_view(), name='task_list'),
re_path(r'^create/$', views.task_create, name='task_create'),
]
@login_required
def task_create(request):
data = dict()
#, data=request.POST
if request.method == 'POST':
form = TaskForm(request.user, data=request.POST)
if form.is_valid():
form.save(commit=False)
data['form_is_valid'] = True
else:
data['form_is_valid'] = False
else:
form = TaskForm(request.user)
context = {'form': form}
data['html_form'] = render_to_string('partial_task_create.html',
context,
request=request
)
return JsonResponse(data)
$("#modal-task").on("submit", ".js-task-create-form", function () {
var form = $(this);
// {% url 'task_create' %} .................
$.ajax({
url: form.attr("action"),
data: form.serialize(),
type: form.attr("method"),
dataType: 'json',
success: function (data) {
if (data.form_is_valid) {
alert("Task created!"); // <-- This is just a placeholder for now for testing
}
else {
$("#modal-task .modal-content").html(data.html_form);
}
}
});
return false;
});
<div class="modal fade" id="modal-task">
<div class="modal-dialog">
<div class="modal-content">
</div>
</div>
</div>
{% load widget_tweaks %}
<form method="post" action="{% url 'task_create' %}" class="js-task-create-form" novalidate>
{% csrf_token %}
<div class="modal-header">
<h4 class="modal-title" style="margin-left:90px;">Create a new Task</h4>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
{% for field in form %}
{% if field.id_for_label == "id_is_completed" %}
<div class="form-check{% if field.errors %} has-error{% endif %}">
<label class="form-check-label">
{% render_field field class="form-check-input" %} {{ field.label }}
</label>
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
<br />
{% else %}
<div class="form-group{% if field.errors %} has-error{% endif %}">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
{% for error in field.errors %}
<p class="help-block">{{ error }}</p>
{% endfor %}
</div>
{% endif %}
{% endfor %}
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Create Task</button>
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</form>
尝试将此
表单.save(commit=False)
更改为此表单.save(commit=True)
@Matej当我尝试此操作时,它引发了一个错误,django.db.utils.IntegrityError:(1048,“列'user\u id'不能为null”)
看看commit标志的用途。本质上,commit=false
停止将模型输入数据库,允许您使用数据库中具有空字段且不能为空的模型对象尝试更改此表单。save(commit=false)
此表单。save(commit=True)
@Matej当我尝试此操作时,它引发了一个错误,django.db.utils.IntegrityError:(1048,“列'user_id'不能为null”)
看看提交标志的用途可能会有所帮助。本质上,commit=false
停止将模型输入到数据库中,从而允许您使用数据库中字段不能为null的模型对象