有问题摆脱此错误。列“last_login”中的空值违反非空约束
我正在尝试使用Digital Ocean来部署我的Django应用程序。我配置了Postgres,但是当我尝试在我的应用程序中注册一个新用户时,我遇到了这个问题。
我试过运行python manage.py makemigrations
和python manage.py migrate
,它们工作正常。 SQL迁移在迁移后完成。
有问题摆脱此错误。列“last_login”中的空值违反非空约束
我正在尝试使用Digital Ocean来部署我的Django应用程序。我配置了Postgres,但是当我尝试在我的应用程序中注册一个新用户时,我遇到了这个问题。
我试过运行python manage.py makemigrations
和python manage.py migrate
,它们工作正常。 SQL迁移在迁移后完成。
尝试添加到您的进口:
from django.utils import timezone
那么无论你抢user
的数据save
新user
的save
过程之前添加:
<user_object>.last_login = timezone.now()
有没有什么理由不能为'last_login'字段使用空值?根据Django 1.8发布文档,我们应该能够为Django的AbstractUser模型的'last_login'字段使用空值:https://docs.djangoproject.com/en/1.8/releases/1.8/#abstractuser-last- login-allow-null-values但是当last_login没有被定义时,我得到了“not-null constraint”错误,这对于Django 1.7有意义,但对于1.8 – modulitos
没有意义如果你还没有运行新的迁移从与1.8+发行捆绑在一起的'django.contrib.auth'包中,这个黑客工作可以保证在大多数情况下工作。我觉得有数据库级别的验证会随[迁移0005](https://github.com/django/django/blob/master/django/contrib/auth/migrations/0005_alter_user_last_login_null.py)而改变。 –
啊,是的,你是对的。我可以通过访问psql提示符并运行'\ d auth_user'(在我的例子中,'auth_user'是我的AUTH_USER_MODEL的'db_table'名称]来调试,这表明'last_login'不可为空。之后,并运行'./manage.py showmigrations --list',我意识到我的迁移被错误地应用。 – modulitos
你如何试图添加上述用户?通过管理窗格或您的具体方式?你运行的是什么版本的Django? –
试图在django模板中注册用户,所以我有表单输入字段,当我提交表单时,views.py将清除它并保存到数据库。我的版本是1.8.6 – noobprogrammer
尝试在保存程序'.last_login = timezone.now()之前,添加'from django.utils import timezone'和无论您抓取用户数据以保存新用户数据的位置, ' –