首页 > 解决方案 > IntegrityError a NOT NULL 约束失败:通过 django 提交表单

问题描述

我想POST REQUEST用现有的HTML FORM, 将其存储在数据库中,但每次我尝试通过表单提交数据时,都会出现以下错误

在此处输入图像描述

顺便说一句,我在这些帖子之后这样做:

使用 HTML 模板的 Django 表单

MultiValueDictKeyError 在登录页面上的 POST 请求后在 Django 中生成

注册.html

{% extends "RegistrarProyecto/layout.html" %}


{% block title %} {% endblock %}

{% block content %}

<h1>Crear Usuario</h1> 

<form class="CrearUsuario" action="{% url 'registro' %}" method="POST">

    {% csrf_token %}
    <input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >
    <br> 
    <br> 
    <input type ="text", name="ResponsableProyecto", placeholder ="Responsable del proyecto">
    <br> 
    <br> 
    <textarea name="DescripcionProyecto", rows="4", cols="50"></textarea>
    <br> 
    <br>
    <input type="submit" value="Registrar">
    </form>
<br>
<a href="{% url 'index' %}">Ir a Bienvenido</a>

{% endblock %}

视图.py

def registro(request):
  if request.method == 'POST':

      NombreProyecto = request.POST.get('NombreProyecto')
      ResponsableProyecto = request.POST.get('ResponsableProyecto')
      DescripcionProyecto = request.POST.get('DescripcionProyecto')

      Proyecto.objects.create(NombreProyecto=NombreProyecto,ResponsableProyecto=ResponsableProyecto,DescripcionProyecto=DescripcionProyecto)
      return redirect("RegistrarProyecto/index.html") 
        

  return render(request, 'RegistrarProyecto/Registro.html')

模型.py

from django.db import models

# Create your models here.

class Proyecto(models.Model):
    NombreProyecto = models.CharField(max_length = 64)
    ResponsableProyecto = models.CharField(max_length= 64)
    DescripcionProyecto = models.CharField(max_length = 64)

    def __str__(self):
        return f"{self.NombreProyecto}"
    
class Evaluador(models.Model):
    NombreEvaluador = models.CharField(max_length=64)
    Proyecto = models.ManyToManyField(Proyecto, blank=True, related_name="Evaluador")

    def __str__(self):
        return f"{self.NombreEvaluador} {self.Proyecto}" 

网址.py

from django.urls import path
from . import views

urlpatterns = [
    path("", views.index, name="index"),
    path("Registro", views.registro, name="registro")

]

标签: pythondjango

解决方案


就是这一行:

<input type="text",name="NombreProyecto", placeholder="Nombre del Proyecto" >

将其更改为:

<input type="text", name="NombreProyecto", placeholder="Nombre del Proyecto" >

推荐阅读