2009-11-28 92 views
22

我有这个模型允许外键给用户空值。 Django的

class Vacancy(models.Model): 
    user = models.ForeignKey(User, null=True, blank=True, default = None) 
    name = models.CharField(max_length=64) 

当管理员我试图创造一个空缺没有用户。它会抛出一个错误“club_vacancy.user_id可能不是NULL”。 我做错什么了吗?

回答

33

club_vacancy.user_id may not be NULL

看起来非常像从数据库中的错误,而不是从Django的。

它似乎最有可能你运行manage.py syncdb后添加null=True。您需要修改数据库模式以允许该列中的空值。

+2

嗯,我跑前执行syncdb后,我加入空=真。我应该如何修改我的分贝? – barin 2009-11-28 20:09:29

+5

执行syncdb不修改已经存在的表。删除表并再次运行syncdb,或手动修改数据库,或使用迁移应用程序。 – 2009-11-28 20:52:25

+6

迁移应用程式,例如“南” – panchicore 2009-11-28 21:47:42

-5

你需要重置你的数据库表(因为只是执行syncdb不更新被alredy与空创建的字段= FALSE)

./manage.py重置your_app

或有一些数据你不想松散地使用SQL命令来删除NOT NULL标志

2

除了南方以外,另一种选择是使用django进行模式更改。

http://code.google.com/p/django-evolution/

进行dB变化之前安装它。然后运行

python manage.py evolve --hint --execute 

确保如果添加了一个新的领域,你允许空值(null=True),或者演变会给你一个错误消息。

+0

如果我不想让新字段为空,该怎么办?我该怎么办? – barin 2009-11-30 20:43:40

+0

较新的Django版本有内置的迁移。 – Flimm 2016-06-21 13:19:52