Javascript Django:数据未提交到数据库,但没有错误

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

我正在为待办事项列表创建Django应用程序。我使用带有Json的引导模式来插入数据库。但是,当我单击submit按钮时,它表示数据已提交到数据库中,但当我检查数据库时,什么都没有

url.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">&times;</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">&times;</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">&times;</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的模型对象