阅读 65

Django自定义的模型如何使用内置的login方法? ٩( ‘ω‘ )و Django问题

文章目录

问题描述

Django中内置了一个函数from django.contrib.auth import login,可以做持久化登陆。login函数的源码中写的是login(request, user, backend=None),也就是说我们最少需要传入两个变量,一个request,一个是当前用户的数据。存入用户数据的数据库,如果是继承了Django内置的用户登录系统from django.contrib.auth.models import AbstractUser,我们将这样的数据库模型传入login中不会出现下面我们要说明的问题,如果你的用户数据并非继承与AbstractUser,而是自定义,只是继承与常规的models.Model,大概率会报出一个错误

  File "项目路径\lib\site-packages\django\db\models\base.py", line 730, in save
    raise ValueError("The following fields do not exist in this "
ValueError: The following fields do not exist in this model or are m2m fields: last_login
复制代码

解决问题

根据报错提示,我们可以看出,他找不到一个表头为last_login的字段(这个字段用于存储最后的登陆时间),我们只需要在存入用户数据的表中添加一个last_login = models.DateTimeField(auto_now_add=True)即可。login(request, user, backend=None)(其中user就是存入用户数据的数据库取出来的数据)
如果你不想让数据库的最后登陆时间表名为last_login ,可以使用db_column属性进行改变,比如我当前的数据库表头名称全部为中文,我写的就是last_login = models.DateTimeField(auto_now_add=True, db_column='最后登录时间')

文章分类
后端
文章标签