有問題擺脫此錯誤。列「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'和無論您抓取用戶數據以保存新用戶數據的位置, ' –