Django创建数据时报错解决

发布时间 2023-03-22 21:16:03作者: 他还在坚持嘛

报错内容:

{
    "code": "500",
    "msg": {
        "is_delete": [
            {
                "message": "这个字段是必填项。",
                "code": "required"
            }
        ]
    }
}

models.py

from django.db import models


class BaseModel(models.Model):
    '''公共字段'''
    is_delete_choice = (
        (1, '删除'),
        (0, '正常')
    )
    is_delete = models.SmallIntegerField(choices=is_delete_choice, default=0, verbose_name='是否被删除') # default=0:默认值是0
    create_time = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)  # auto_now_add的意思,插入数据的时候,自动取当前时间
    update_time = models.DateTimeField(verbose_name='修改时间', auto_now=True)  # 修改数据的时候,时间会自动变

    class Meta:
        abstract = True  # 只是用来继承的,不会创建这个表

我们可以看到:is_delete的字段是有默认值的,我们不传值是没有问题的

 forms.py

from django import forms
from user import models


class ParameterForm(forms.ModelForm):
    class Meta:
        model = models.Parameter # 创建类变量和model,建立映射关系
        fields = '__all__' # 验证全部字段

 而到了froms.py中是验证所有的字段,所以就会报错,这时我们应该用到 exclude 把非必填 以及会自动填写的字段排除下,应该改为:

from django import forms
from user import models


class ParameterForm(forms.ModelForm):
    class Meta:
        model = models.Parameter # 创建类变量和model,建立映射关系
        #fields = '__all__' # 验证全部字段
        exclude = ['id','is_delete','create_time','update_time']