Python Django模型表单验证和;完整性错误
我尝试使用Django 1.7中的ModelForm,其模型如下所示:Python Django模型表单验证和;完整性错误,python,django,forms,validation,Python,Django,Forms,Validation,我尝试使用Django 1.7中的ModelForm,其模型如下所示: class Record(models.Model): name = models.TextField(default='') ean = models.BigIntegerField( unique=True, blank=False, verbose_name='EAN Code or any code that could identify the Ite
class Record(models.Model):
name = models.TextField(default='')
ean = models.BigIntegerField(
unique=True,
blank=False,
verbose_name='EAN Code or any code that could identify the Item',
)
year = models.PositiveSmallIntegerField(default=2000)
artist = models.ForeignKey(
'Artist',
blank=False,
related_name='records',
)
id = models.AutoField(primary_key=True)
class Meta:
ordering = ('id',)
unique_together = ('artist','name')
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('view_record',args=[self.id])
还有一个这样的表格:
class RecordForm(forms.models.ModelForm):
class Meta:
model = Record
fields = ('name','year','artist','ean')
widgets= {
'name': forms.fields.TextInput(attrs={
'placeholder': 'Name of the Record',
'class': "form-control input-lg",
}),
}
error_messages = {
'name': {'required':EMPTY_ITEM_ERROR},
'ean': {'required':EMPTY_ITEM_ERROR}
}
def save(self):
return super().save()
我不明白为什么当字段“ean”为空时,方法validate()不会引发错误,同时DB会显示完整性错误:
Traceback (most recent call last):
File "/usr/local/lib/python3.2/dist-packages/django/db/backends/utils.py", line 65, in execute
return self.cursor.execute(sql, params)
psycopg2.IntegrityError: null value in column "ean" violates not-null constraint
DETAIL: Failing row contains (28, record1, 27, null, 2000).
我是Django和Python新手,但我认为“blank=False”字段足以引发验证错误?谢谢你的帮助你为什么这么想?如果希望db接受null,则应将字段声明为
null=False
。Daniel,在文档中,它表示需要值True才能接受null值,我遗漏了什么吗?我会这样想,因为它写在这里:请发布您的视图函数或类,以查看您如何处理发布的表单并将结果保存到db。例如,您可能没有首先调用form.is\u valid(),或者没有正确触发验证过程。