2017-11-23 11 views
0

django.contrib.authのDjango 1.11およびUserモデルを使用しています。ここでuser.last_loginフィールドを更新できません

は私のコードです:

from django.contrib.auth.models import User 
from django.utils import timezone 
u = User.objects.create_user('user1') 
print(u.last_login) # prints old date 
u.last_login = timezone.now() 
u.save() 
u.refresh_from_db() # just in case 
print(u.last_login) # prints old date 

はなぜlast_loginフィールドが更新されませんか?

@receiver(models.signals.pre_save, sender=User) 
def by_pass_save_last_login(sender, instance, **kwargs): 
    u = User.objects.get(pk=instance.pk) 
    if not instance.last_login: 
     instance.last_login = timezone.now() 
    else: 
     instance.last_login = u.last_login 

それは、データベースからユーザをロードして、それがlast_loginだから、それがいることを設定したNone次のとおりです。

+0

は、あなたがチェックすることができます'プリント(u.last_login):この受信機を修正

は、問題を修正しましたか? – NoobEditor

+0

@NoobEditorちょうど試しましたが、それはまだ古い値です。 –

+0

エラーはありませんか?あなたは '.py'ファイルまたはシェル経由でそれを実行していますか? – NoobEditor

答えて

1

last_loginフィールドをめちゃくちゃにされた私は、コード内でこの他の場所のような信号受信機を持っていたが判明します値をユーザーインスタンスに返します。 () ``一度u.refresh_from_db `前

@receiver(models.signals.pre_save, sender=User) 
def by_pass_save_last_login(sender, instance, **kwargs): 
    if not instance.last_login: 
     instance.last_login = timezone.now() 
+0

これを受け入れたとマークすることができます。 :) – NoobEditor

+0

@NoobEditor私の答えを保証するために2日間待たなければならない –

+0

hmmm ... SOは時々残忍かもしれません! :D – NoobEditor

関連する問題