我正在建立一个电子健康记录软件。我的一个观点包含一个捕获患者基本信息的表格。
forms.py
from django import forms
from nesting.models import Identity_unique
class Identity_Form(forms.ModelForm):
NIS = forms.CharField(
widget=forms.TextInput(
attrs={
'placeholder': 'Enter NIS',
'class' : 'form-control'
}
)
)
First_Name = forms.CharField(
widget=forms.TextInput(
attrs={
'placeholder': 'Enter First Name',
'class' : 'form-control'
}
)
)
Last_Name = forms.CharField(
widget=forms.TextInput(
attrs={
'placeholder': 'Enter Last Name',
'class' : 'form-control'
}
)
)
Residence = forms.CharField(
widget=forms.TextInput(
attrs={
'placeholder': 'Enter Address',
'class' : 'form-control'
}
)
)
DOB = forms.CharField(
widget=forms.TextInput(
attrs={
'placeholder': 'Enter Date of Birth',
'class' : 'form-control'
}
)
)
class Meta:
model = Identity_unique
fields = ('NIS', 'First_Name', 'Last_Name', 'Residence', 'DOB',)
modelForm的数据模式
models.py
from django.db import models
from django.contrib.auth.models import User
from Identity import settings
import datetime
# Create your models here.
class Identity_unique(models.Model):
NIS = models.CharField(max_length = 200, primary_key = True)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
Timestamp = models.DateTimeField(auto_now = True)
First_Name = models.CharField(max_length = 80, null = True, )
Last_Name = models.CharField(max_length = 80, null = True, )
Residence = models.CharField(max_length = 80, blank = True )
DOB = models.DateField(auto_now = False)
不幸的是,每次尝试将保存的数据提交到服务器时,我都会收到此错误:
IntegrityError at /nesting/
null value in column "date_of_birth" violates not-null constraint
DETAIL: Failing row contains (Q234934, 2, 2017-10-06 19:17:42.084063+00, Andre, James, nou.self@gmail.com, null, 1991-12-10).
我正在使用postgresql 9.6作为数据库。我删除了迁移文件夹并多次迁移模型,但null
和IntegrityError
仍然存在。我也一直在我的数据库中寻找db表Identity_unique但我找不到它。我这样做是为了删除带有空约束的列,因为我将生日字段从date_of_birth = models.DateField(max_length = 100, default = 0)
更改为DOB = models.DateField(auto_now = False).
正如您在错误中看到的那样,列中有一个null
的列不被允许。
最初我使用date_of_birth = models.DateField(max_length = 100, null = True)
作为字段。我被提示添加默认值,我在bash终端中添加了timezone.now()
。我不确定是否解释了错误背后的原因,但我仍在添加它。
答案 0 :(得分:1)
“date_of_birth”列中的
null
值违反了非空约束
您可能无法将任何值保存到DOB
列,您需要允许NULL
值。你应该改为
DOB = models.DateField(auto_now = False, null = True)
您还应该确保表格中的DOB
列允许null
。