Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型表单验证和;完整性错误_Python_Django_Forms_Validation - Fatal编程技术网

Python Django模型表单验证和;完整性错误

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

我尝试使用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 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(),或者没有正确触发验证过程。