允许用户外键为空。姜戈
我有这个模型
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”。 我做错了什么吗?
I have this model
class Vacancy(models.Model):
user = models.ForeignKey(User, null=True, blank=True, default = None)
name = models.CharField(max_length=64)
When in admin i try to creat a vacancy without a user. And it throws an error " club_vacancy.user_id may not be NULL".
Am i doing something wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
看起来很像来自数据库的错误,而不是来自 Django 的错误。
看来您很可能是在运行
manage.pysyncdb
后添加了null=True
。您需要修改数据库架构以允许该列中存在空值。Looks very much like an error from your database, rather than from Django.
It seems most likely that you added
null=True
after runningmanage.py syncdb
. You'll need to modify your database schema to allow null values in that column.除了 South 之外,另一个选择是使用 django Evolution 进行架构更改。
http://code.google.com/p/django-evolution/
安装在进行数据库更改之前。然后运行
确保如果您添加新字段,则允许空值 (
null=True
),否则进化会给您一条错误消息。Aside from South, another option is to use django evolution for schema changes.
http://code.google.com/p/django-evolution/
Install it before making db changes. Then run
Make sure that if you add a new field, you allow nulls (
null=True
) or else evolve will give you an error message.你需要重置你的数据库表(因为syncdb不会更新已经用null=False创建的字段)
./manage.py重置your_app
或者如果有一些你不想丢失的数据使用SQL命令删除NOT空标志
you need to reset you database table (since just syncdb does not update fields that are alredy created with null=False)
./manage.py reset your_app
OR if there is some data that you do not want to loose use SQL commands to remove NOT NULL flag