Django modelform未保存

Django modelform未保存,django,django-models,django-views,Django,Django Models,Django Views,我用谷歌搜索了一下这里的其他主题。我的表格仍然没有保存 看法 模板 {% extends 'base.html' %} {% load crispy_forms_tags %} {% block content %} <h1>New Apprentice</h1> <form action="" method="POST" enctype="multipart/form-data">

我用谷歌搜索了一下这里的其他主题。我的表格仍然没有保存

看法

模板

{% extends 'base.html' %}
{% load crispy_forms_tags %}
{% block content %}

  <h1>New Apprentice</h1>
  <form action="" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <div class="form-row">
      <div class="form-group col-md-6 mb-0">
        {{ form.name|as_crispy_field }}
      </div>
      <div class="form-group col-md-6 mb-0">
        {{ form.email|as_crispy_field }}
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-6 mb-0">
        {{ form.role|as_crispy_field }}
      </div>
      <div class="form-group col-md-6 mb-0">
        {{ form.cost|as_crispy_field }}
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-6 mb-0">
        {{ form.p_name|as_crispy_field }}
      </div>
      <div class="form-group col-md-6 mb-0">
        {{ form.p_time|as_crispy_field }}
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-6 mb-0">
        {{ form.division|as_crispy_field }}
      </div>
      <div class="form-group col-md-6 mb-0">
        {{ form.line_manager|as_crispy_field }}
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-4 mb-0">
        {{ form.on_course|as_crispy_field }}
      </div>
      <div class="form-group col-md-4 mb-0">
        {{ form.finished_course|as_crispy_field }}
      </div>
      <div class="form-group col-md-4 mb-0">
        {{ form.left_course|as_crispy_field }}
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-6 mb-0">
        {{ form.start_date|as_crispy_field }}
      </div>
      <div class="form-group col-md-6 mb-0">
        {{ form.finish_date|as_crispy_field }}
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-12 mb-0">
        {{ form.notes|as_crispy_field }}
      </div>
    </div>
    <button type="submit" class="btn btn-success">Save</button>
    <a href="/apprentices/" class="btn btn-secondary">Back</a>
    </form>
{% endblock %}

当我点击save时,实际上什么也没发生。没有重定向,没有错误。这将在控制台中打印
[05/Oct/2020 12:58:13]“POST/peedites/newpeedient/HTTP/1.1”200 12188

如您所见,我在视图中打印了
request.POST
,查看表单字段中填充的所有数据是否都存在,是否都存在。刚才我点击保存。什么也没发生


有什么想法吗??谢谢

表格无效。如果它是有效的,它将保存对象。但是,即使
form.save()
不会产生预期的副作用,
重定向(…)
调用也会产生302响应代码,而不是200响应代码

您可以使用以下选项打印表单错误:

def newapprentice(request):
    form = NewApprenticeForm()
    if request.method == 'POST':
        form = NewApprenticeForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('apprentices/index.html')
        print(form.errors)  # ←  print errors in the console

    return render(request, 'apprentices/newapprentice.html', {'form': form})

该表单无效。如果
表单
有效,它将返回一个
302(重定向),而不是一个200(呈现页面)。您可以
重定向(…)
下打印(form.errors)
(因此在内部
If
正文之外)。我知道了,谢谢。这是我返回的错误
  • 部门
    • 此字段是必需的。
  • 创建日期
    • 此字段是必需的。
@IanProbets:看起来您的
新学徒表单
有一个
部门
字段,但是这在呈现的表单中不存在,因此您应该在模板中添加
{form.dept | as_crisply_field}
from django.forms import ModelForm
from .models import Apprentice

class NewApprenticeForm(ModelForm):
    class Meta:
        model = Apprentice
        fields = '__all__'

def newapprentice(request):
    form = NewApprenticeForm()
    if request.method == 'POST':
        form = NewApprenticeForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('apprentices/index.html')
        print(form.errors)  # ←  print errors in the console

    return render(request, 'apprentices/newapprentice.html', {'form': form})
{{ form.name.errors }}
<div class="form-group col-md-6 mb-0">
    {{ form.name|as_crispy_field }}
</div>
{{ form.dept.errors }}
<div class="form-group col-md-6 mb-0">
    {{ form.dept|as_crispy_field }}
</div>