2016-04-26 46 views
0

我复制了完整的示例代码:[customizing admin user] [1](django文档的一部分),但是当我运行它时,django不会出错,但是当我添加一个用户,django会出现以下错误。 我没有改变这个例子的任何代码,并设置后续文件。 跟进链接例如: https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#a-full-example来自Django文档的示例代码的错误

错误:

IntegrityError at /admin/app01/myuser/add/ 
NOT NULL constraint failed: app01_myuser.last_login 
Request Method: POST 
Request URL: http://127.0.0.1:8000/admin/app01/myuser/add/ 
Django Version: 1.8.5 
Exception Type: IntegrityError 
Exception Value:  
NOT NULL constraint failed: app01_myuser.last_login 
Exception Location: /Library/Python/2.7/site-packages/django/db/backends/sqlite3/base.py in execute, line  318 
+0

你能描述一下你的目标吗? ?还有,您是否更改了该代码? –

+0

需要更多信息来解决此问题。确保你的数据库是最新的(做你的迁移)从1.7 - > 1.8 last_login字段的限制已经改变,尽管这可能不会影响你的应用程序,我不知道!并确保您从django.contrib.auth.models中导入用户。 –

+0

我已经尝试使用新项目使用相同的代码从django文件,django(1.8)正常运行,但是当用户保存在管理员,错误会出来, – scott

回答

0

很明显你从Django的示例代码使用自定义用户模型和表的定义之间的差异就代表在数据库中。错误来自数据库,表示app01_myuser表的last_login列对其有NOT NULL约束,并且您试图创建具有该字段NULL的用户。

您的MyUser模型包含从AbstractBaseUser继承的last_login字段。下面是last_loginAbstractBaseUser类的定义:

last_login = models.DateTimeField(_('last login'), blank=True, null=True) 

基于对last_login该定义,NOT NULL约束不应该存在于数据库中。

通过运行迁移来确保您的数据库是最新的。注意运行迁移时发生的任何错误。

您也可以检查app01迁移代码,以尝试查看app01_myuser是在何时以及为何首先使用NOT NULL约束创建的。