Django用户的默认外键值
我看过了这个网站的内容:http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/,但是在迁移我的新数据库结构时遇到了问题,这个结构里有一个指向用户的外键,涉及到一系列产品。
我的代码简化版是:
from django.contrib.auth.models import User
# other imports
class Product(models.Model):
author = models.ForeignKey(User)
# other product fields..
但是当我尝试迁移到South时,可能是因为我的用户数据库不在South的管理之下(请原谅我这个新手的问题),我遇到了错误,提示需要设置一个默认值:
_mysql_exceptions.OperationalError: (1067, "Invalid default value for 'author_id'")
有没有人能告诉我我哪里做错了吗?理想情况下,我不想为用户设置默认值,或者至少希望能设置为null、false或0(但这些似乎都不行)……
非常感谢,
亚当
2 个回答
0
最后我选择了简单的方法,完全重置了产品表,然后从头开始迁移,这样就成功了。不过我不太确定我学到了什么(除了怎么重置一个应用)!
0
如果你想让author
这个字段可以为空,你需要在定义外键的时候加上null=True
。你可能还想加上blank=True
,因为这个设置会影响Django表单的验证。
author = models.ForeignKey(User, null=True, blank=True)