2015-11-12 20 views
5

Bu hatadan kurtulmakla ilgili sorunlar."last_login" sütunundaki boş değer null kısıtını ihlal ediyor

Django uygulamamı dağıtmak için Dijital Okyanusu kullanmaya çalışıyorum. Postgres'i yapılandırdım, ancak uygulamamda yeni bir kullanıcı kaydetmeye çalışıyorum, bu sorunu yaşıyorum.

python manage.py makemigrations ve python manage.py migrate'u çalıştırmayı denedim ve iyi çalışıyorlar. SQL geçişleri geçiş sırasında tamamlanır.

+0

Yukarıda belirtilen kullanıcıyı nasıl eklemeye çalışıyorsunuz? Yönetici bölmesi veya belirli bir yoldan mı? Django'nun hangi sürümünü kullanıyorsunuz? –

+0

Bir django şablonunda kullanıcıyı kaydetmeye çalışıyorum, böylece form girdi alanlarım var ve formu gönderdiğimde, views.py onu temizler ve db'ye kaydeder. Benim versiyon) (1.8.6 – noobprogrammer

+0

'eklemek deneyin django.utils timezone' aktarır ve' user' verilerini kapmak yerde yeni kurtarmak için gelen 'kurtarmak prosedür' .last_login = timezone.now önce eklemek user' olduğunu –

cevap

5

sizin ithalatı için bu eklemek deneyin:

from django.utils import timezone 

Sonra yeni usersave işlem öncesi eklemek save için user 'in verileri yakalar her yerde:

<user_object>.last_login = timezone.now() 
+0

'last_login' alanı için boş değer kullanamamızın bir nedeni var mı? https://docs.djangoproject.com/en/1.8/releases/1.8/#abstractuser-last-: Django 1.8 sürüm dokümanlar göre, Django'nın AbstractUser modelinin 'last_login' alan için boş değer kullanmak mümkün olmalıdır login-allow-null-values ​​Ancak, "last_login" tanımlanmadığında "boş olmayan sınırlama" hatası alıyordum, bu da Django 1.7 için mantıklı olurdu, ancak 1.8 – modulitos

+0

için değil. Yeni geçişleri çalıştırmadıysanız 1.8+ dağıtımıyla birlikte gelen 'django.contrib.auth' paketinden bu hack işinin çoğu durumda çalışacağı garanti edilir. Veri tabanı düzeyinde bir doğrulama olduğunu hissediyorum. Bu, [göçmen 0005] ile değiştirildi (https://github.com/django/django/blob/master/django/contrib/auth/migrations/0005_alter_user_last_login_null.py). –

+0

Ah evet, haklısınız. Ben '\ d auth_user' psql'in istemini erişerek ve çalıştırarak bu hata ayıklamak başardı last_login' null değildi' gösterdi, (benim durumumda, 'auth_user' benim AUTH_USER_MODEL için' db_table' adıydı). Bundan sonra ve './manage.py showmigrations --list' komutunu çalıştırırken, geçişlerimin yanlış uygulandığını fark ettim. – modulitos

3

ben django yükseltme edildi Buna koştuğumda 1.7'ye django 1.10. Sonunda, veritabanı tablolarını ve sütunlarını güncellemek için python manage.py migrate'u çalıştırmam gerekiyordu.

+0

Bu benim için doğru cevaptı! – martincho

+0

Woo! Birisi cevabımı okuyor! o senin için de çalıştı sevindim! – teewuane

+0

Kısa cevap ama fayda bir sürü, teşekkürler –

İlgili konular