Django模型字段具有null = True但即使在重置数据库后也会产生IntegrityError

时间:2013-04-14 17:33:13

标签: django django-models

我看到许多用户在使用以下形式的django错误时遇到的问题:

  

列X中的* null值处的IntegrityError违反了非空约束

通常这是因为他们仅在原始models.py操作之后用null=True, blank=True更新了syncdb,他们需要手动更新有问题的SQL表,否则使用south进行迁移。但是,我确实遇到了这个问题,尽管完全删除了数据库模式并使用syncdb使用models.py中的正确选项重建了它。任何人都能解释一下吗?显然我可以只更新Postgre中的列以删除NOT NULL,但我担心这种情况会发生。

models.py

class TopTen(models.Model):
    toptenuser = models.ForeignKey(TopTenUser)
    date_in = models.DateTimeField()
    date_out = models.DateTimeField(null=True, blank=True)
    active = models.BooleanField()

syncdb

> (venv)richard@ubuntu:~/DjangoProjects/Heroku/mytopten$ heroku run python manage.py syncdb
> Running `python manage.py syncdb` attached to terminal... up, run.5406
> Creating tables ...
> Creating table auth_permission
> Creating table auth_group_permissions
> Creating table auth_group
> Creating table auth_user_groups
> Creating table auth_user_user_permissions
> Creating table auth_user
> Creating table django_content_type
> Creating table django_session
> Creating table django_site
> Creating table django_admin_log
> Creating table mytopten_toptenuser
> Creating table mytopten_topten
> Creating table mytopten_song_toptens
> Creating table mytopten_song

然而,我第一次runserver并尝试输入TopTen实例:

  

IntegrityError:“date_out”列中的空值违反了非空约束

我在这里做错了吗?感谢。

0 个答案:

没有答案