Django创建数据时报错解决
报错内容:
{ "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']
本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/17244727.html