Djangoプロジェクトがあり、電話で電話をかけるたびにユーザーアカウントが作成されます。その人は、後で、自分のアカウントを使用して当社のWebサイトにログインする場合と使用しない場合があります。
質問:ユーザーが当社のWebサイトにログインしたことがあるかどうかを確認するにはどうすればよいですか?
明確化:この時点から作成された新しいユーザーだけでなく、何百人もの既存のユーザーについて上記の質問に答えたいと思います。
考え1:チェックUser.last_login
。残念ながら、Djangoは、ログインしたかどうかに関係なく、ユーザーが作成されたときにlast_login
初期化されます。datetime.datetime.now()
考え2:User.last_login
一致するかどうかを確認しUser.date_joined
ます。残念ながら、Djangoはこれらのフィールドを両方ともdatetime.now()
に初期化し、数マイクロ秒離れている可能性があります。
In [1]: u = User.objects.create(username="bla")
In [2]: u.date_joined - u.last_login
Out[2]: datetime.timedelta(0, 0, 23)
私が使用している現在のハック:ユーザーが少なくとも1回はログインしていると仮定します user.last_login - user.date_joined >= datetime.timedelta(seconds=1)
。
ユーザーがログインしたことがあるかどうかを確認するためのより良い方法はありますか?