首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法更新Django内置用户的last_login字段

是因为Django内置用户模型(AbstractBaseUser)的last_login字段是自动管理的,无法手动更新。last_login字段记录了用户最后一次登录的时间。

Django内置用户模型是一个高度可定制的用户认证系统,它提供了一些默认的字段和方法,以便开发者可以快速构建用户认证功能。其中,last_login字段是用来追踪用户登录状态的。

由于last_login字段是自动管理的,它会在用户登录成功后自动更新为当前时间。如果你想手动更新last_login字段,可以通过自定义用户模型来实现。

首先,你需要创建一个新的用户模型,继承自AbstractBaseUser,并添加一个新的字段来存储最后登录时间。然后,你可以在用户登录成功后,手动更新这个新字段的值。

以下是一个示例代码:

代码语言:txt
复制
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
from django.db import models

class MyUserManager(BaseUserManager):
    def create_user(self, email, password=None, **extra_fields):
        if not email:
            raise ValueError('The Email field must be set')
        email = self.normalize_email(email)
        user = self.model(email=email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, password=None, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        return self.create_user(email, password, **extra_fields)

class MyUser(AbstractBaseUser):
    email = models.EmailField(unique=True)
    last_login_custom = models.DateTimeField(null=True, blank=True)

    # Add other fields as needed

    objects = MyUserManager()

    USERNAME_FIELD = 'email'

    def update_last_login(self):
        self.last_login_custom = timezone.now()
        self.save()

    # Add other methods as needed

在上面的示例代码中,我们创建了一个新的用户模型MyUser,添加了一个新的字段last_login_custom来存储最后登录时间。在用户登录成功后,我们可以调用update_last_login方法来手动更新这个字段的值。

这只是一个简单的示例,你可以根据自己的需求进行更多的定制和扩展。关于Django用户认证系统的更多信息,你可以参考Django官方文档:https://docs.djangoproject.com/en/3.2/topics/auth/customizing/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 多对多字段更新和插入数据实例

普通字段 一对多字段 多对多字段 插入数据 #插入数据 def add(request): G_title=request.POST.get('title')#-------值为:python...:DjangoManyToManyField(多对多)使用以及through作用 创建一个经典多对多关系:一本书可以有多个作者,一个作者可以有多本书(如下) ?...a.book_set.all() 3.给多对多字段添加值(添加多对多关系): ?...,Django允许指定一个用于管理多对多关系中间模型,然后就可以把这些额外字段添加到这个中间模型中,具体方法就是在ManyToMany字段中指定through参数指定作为中介中间模型,修改上述models.py...,add(),remove(),create()这些方法都会被禁用,所以在创建这种类型关系时候唯一方法就是通过创建中间模型实例 以上这篇Django 多对多字段更新和插入数据实例就是小编分享给大家全部内容了

4.3K30
  • django使用F方法更新一个对象多个对象字段实现

    通常情况下我们在更新数据时需要先从数据库里将原数据取出后放在内存里,然后编辑某些字段或属性,最后提交更新数据库。使用F方法则可以帮助我们避免将所有数据先载入内存,而是直接生成SQL语句更新数据库。...from django.db.models import F Product.objects.update(price=F(‘price’) * 1.2) 我们也可以使用F方法更新单个对象字段,...F方法对某个对象字段进行更新后,需要使用refresh_from_db()方法后才能获取最新字段信息(非常重要!)。...批量更新多个属性 有时候我们需要同时(一次性)更新某个用户多条属性。...使用F方法更新一个对象多个对象字段实现就是小编分享给大家全部内容了,希望能给大家一个参考。

    3K20

    django 关于User模型

    以下对这个User对象做一个简单了解: 字段内置User模型拥有以下字段: username: 用户名。150个字符以内。可以包含数字和英文字符,以及_、@、+、.和-字符。...如果是超级管理员,那么拥有整个网站所有权限。 last_login:上次登录时间。 date_joined:账号创建时间。...if user is not None: # 执行验证通过后代码 else: # 执行验证没有通过代码。 扩展用户模型: Django内置User模型虽然已经足够强大了。...但是有时候还是不能满足我们需求。比如在验证用户登录时候,他用用户名作为验证,而我们有时候需要通过手机号码或者邮箱来进行验证。还有比如我们想要增加一些新字段。...那么这时候我们就需要扩展用户模型了。扩展用户模型有多种方式。这里我们来一一讨论下。 1. 设置Proxy模型: 如果你对Django提供字段,以及验证方法都比较满意,没有什么需要改

    1.1K30

    Django框架开发016期 数据更新用户信息更新页面开发

    本节主要为朋友介绍通过djangoorm模式如何更新用户信息,你会发现使用django开发网站,在数据操作上变得更加简单! 本节教程属于《刘金玉Django网站开发课程》电子书第五章第六节。...: curuser=LjyUser.objects.get(userID=userID) #这里使用异常检测机制,当无法获取到用户数据时,会抛出异常,否则就是返回单个用户对象实例...最后将“编辑”页面通过form表单POST过来所有数据利用requestPOST字典接收并保存到查询出来用户相应字段,最后通过save方法保存到数据库即可。...然后,我们点击“更新”按钮,发现“更新成功”页面,如下图所示。 我们点击“返回用户列表”页以后,观察更新数据是否生效,如下图所示。 我们发现数据更新生效成功!...至此,我们已经能够开发用户信息修改功能了。 下期老刘即将为大家介绍数据删除,删除指定用户。通过刘金玉编程教程,你会发现Django框架开发数据库变得越来越简单!加油哦!

    9710

    Phoenix使用ROW_TIMESTAMP字段导致无法从null更新数据故障描述

    本文链接:https://blog.csdn.net/sunlen/article/details/102969851 在使用Phoenix过程中,发现了一个奇怪异常现象,其中一个表,有个字段(VARCHAR...类型),一旦这个字段更新为null值,从此就无法重新更新字段值。...我在测试过程中,重新新建一张表,就发现可以正常更新,是我困惑不已。 最后经过反复对比,发现是另外一个字段设置成ROW_TIMESTAMP导致,下面详细讲述一些问题复习。...是主键,但没有设置为ROW_TIMESTAMP类型,f_content就是我们要测试VARCHAR字段。...将f_content更新为null,数据可以正常更新: ? 重新将f_content更新为非空数据,神奇现象出现了,数据无法更新: ?

    1.6K20

    第一季 | 自定义用户模型,需要注意哪些坑位

    django项目需要第三方登录,怎么解!!! 可以修改用户表,多添加字段?...AbstractBaseUser 仅包含身份验证功能,不包含实际字段,AbstractBaseUser中只含有3个field: password, last_login和is_active。...再来看下第一季都有哪些可以回顾和用得上小技能 本次创建 django 项目,新建用户模型继承 AbstractUser ,它是高度集成类,里面定义字段,不会完全显示,在迁移数据库时,就会创建。...如果项目只需要基本用户密码、用户类型等少数几个字段,这时候用 AbstractUser 会不合理,对数据库资源浪费,也会降低数据库效率。...在模型类中必须定义一个用户字段,并指定属性为 unique,并向 django 说明这个字段用户字段

    77210

    Django使用自己用户系统

    用过django的人应该都会知道admin,不过,需求是多变,比如,你有一个变态用户系统,用户可能有大中小三张头像,除了fisrt name ,last name外还有middle name,T^T...name巴拉巴拉,django 用户系统可能满足不了你需求,这时候需要用自己用户系统了,如何能在满足需求时候充分又利用到django用户系统?...django使用自己用户系统 step-1 写自己auth模块(定义user class) step-2 admin.py 注册到djangoadmin后台,并且修改一些field step-3...不过,需求是多变,比如,你有一个变态用户系统,用户可能有大中小三张头像, 除了fisrt name ,last name外还有middle name,T^T name巴拉巴拉,django 用户系统可能满足不了你需求...,这时候需要用自己用户系统了,如何能在满足 需求时候充分又利用到django用户系统?

    62920

    Django(75)django-rest-framework-simplejwt「建议收藏」

    前言 由于之前我们一直使用django-rest-framework-jwt 这个库,但是作者在17年时候就已经不再维护了(有部分bug没有解决),所以我们也就不用了,目前我们使用django-rest-framework-simplejwt...并且借鉴了DRF中另一个JSON web token库和django-rest-framework-jwt 安装 1.使用以下pip命令安装 pip install djangorestframework-simplejwt...中可以配置一些默认信息 # Django project settings.py from datetime import timedelta ......,更新user表中last_login字段 'ALGORITHM': 'HS256', # 加密算法 'SIGNING_KEY': settings.SECRET_KEY, #...签名密钥 'VERIFYING_KEY': None, # 验证密钥,用于验证生成令牌内容 'AUDIENCE': None, # 设置为None时,此字段将从token中排除,并且不会进行验证

    1.8K40

    Python+django网页设计入门(19):创建新模型扩展自带用户字段

    技术要点: 1)创建自定义用户模型,使用一对一映射关系,扩展django自带用户字段; 2)使用django自带认证和登录功能; 3)登录后获取自定义信息。...3、修改网站项目的urls.py文件,增加新应用路由 ? 4、修改apps\users\models.py文件,增加新模型 ?...文件内容与前面课程中创建一样。...9、修改apps\users\views.py文件,增加用户登录业务逻辑 ? 10、修改apps\users\urls.py文件,设置应用users内部路由 ?...11、运行网站,登录管理页面,添加一个新用户 ? ? 12、回到管理页面,增加自定义用户,并选择前面步骤创建认证用户 ? ? 13、运行网站,打开登录页面,使用前面步骤创建用户登录 ?

    1.4K20

    4.寻光集后台管理系统-用户管理(用户表)

    中添加刚创建应用 不过因为我们换了创建应用路径,所以需要将新路径添加到环境变量中,不然项目无法识别到 import sys from datetime import timedelta from...BASE_DIR和apps路径 这里操作Pycharm是无法识别到,所以为了达到同样效果,需要将apps标记为「源代码根路径」 标记后文件夹就会变成蓝色 安装应用 然后修改INSTALLED_APPS...', 'users.apps.UsersConfig', ] 用户模块 Django有自带了一个用户管理模块,所以不再从头编写,而是从它基础上进行二次开发 用户Django自带用户管理模块...models.py文件为: from django.contrib.auth.models import AbstractUser 简单看一下AbstractUser和它父类 它里面包含了很多登录常用字段了...OK 迁移过程文件 迁移过程中会生成backend/apps/users/migrations/0001_initial.py 里面包含了迁移时候会创建字段和相关信息 所以在提交代码时候不要忘了它

    65120

    Django权限系统auth模块详解

    last_login 用户最后一次登录时间。 date_joined 账户创建时间。当账号创建时,默认设置为当前date/time。...定义了用户模型, 每个用户组拥有id和name两个字段, 该模型在数据库被映射为auth_group数据表。...User对象中有一个名为groups多对多字段, 多对多关系由auth_user_groups数据表维护。Group对象可以通过user_set反向查询用户组中用户。...auth系统无法提供对象级权限控制, 即检查用户是否对数据表中某条记录拥有增改删权限。如果需要对象级权限控制可以使用django-guardian....假设在博客系统中有一张article数据表管理博文, auth可以检查某个用户是否拥有对所有博文管理权限, 但无法检查用户对某一篇博文是否拥有管理权限。

    1.6K20

    15.Django基础十一之认证系统

    内置了强大用户认证系统--auth,它默认使用 auth_user 表来存储用户数据,使用auth模块来进行用户认证,那么需要使用人家django自带auth_user表来存储用户信息数据。   ...User表具有以下字段内置User模型拥有以下字段: username: 用户名。150个字符以内。可以包含数字和英文字符,以及_、@、+、.和-字符。不能为空,且必须唯一!...关于User表扩展阅读内容(目前作为了解) Django内置User模型虽然已经足够强大了。但是有时候还是不能满足我们需求。...比如,我想要加一个存储用户手机号字段,怎么办?   聪明你可能会想到新建另外一张表然后通过一对一和内置auth_user表关联,这样虽然能满足要求但是有没有更好实现方式呢?   ...,UserInfo表里就不需要有auth_user里重复字段了,比如说username以及password等,但是还是可以直接使用这些字段,并且django会自动将password进行加密   按上面的方式扩展了内置

    2.1K20

    自定义 DjangoUser Model,扩展 AbstractUser类注意事项

    原文链接: http://www.weiguda.com/blog/28/ 另外一篇参考文章  Django 重写用户模型 django——重写用户模型 Django内建User模型可能不适合某些类型项目...3.指定自定义用户模型 3.1 Django 期望你自定义 User model 满足一些最低要求: 模型必须有一个唯一字段可被用于识别目的。..., is_staff, is_active, is_superuser, last_login, and date_joined跟默认User没什么区别, 那么你还不如仅仅替换DjangoUserManager...5.自定义用户内置身份验证表单 Django内置forms和views和相关联user model有一些先决条件。...然而,你也需要覆写一些django.contrib.auth.models.AbstractUser 字段定义不在你自定义用户模型中

    6.1K20

    用pythonDjango框架内置User来做一个用户注册、登录、密码重置应用

    写了几个简单页面,突然想到这些页面需要注册并登录后用户才可以观看该怎么实现呢?于是通过查找资料,做了一个简单注册、登录、密码重置、密码找回应用。...使用Django内置User用户管理系统实现。 Step 1....django-admin startapp user创建user app, 并在settings.py中添加安装 user app....user app下urls.py 中url 包含登录,注册,修改密码,用户注销,密码找回。如下: ? Step 3.在view.py 中实现上述功能。用户登录实现。...如果是GET请求,直接将模板html代码生成网页返回到浏览器。 如下: ? Step 4. 登录界面的html, 该template用户实现登录、注册、修改密码。模板主要由表单文本框和按钮组成。

    1.6K10

    测试开发进阶(三十九)

    user_info = { 'username': user.username, 'role': '管理员' if user.is_superuser else '普通用户...debugtalk.py 环境管理-环境新增 接口管理-接口新增 配置管理-配置新增 用例管理-用例新增 部署 流程 安装操作系统 安装python mysql 搭建Django环境--各种模块安装...默认为空格 -knum:指定以某个字段来排序 # 以:分割第三列数值大小排列$ sort -t":" -k3 -n /etc/passwd ?...wc「word count」计算文本数量 -l:打印行数 -w:打印单词数 -c:打印字节数 -L:打印最长行字节数 变量 本地变量 全局变量 内置变量 定义变量 等号前后不能有空格 $ username...定义全局变量 export 变量 export 变量=值 在 ~/.bashrc中创建才是真正全局变量 内置变量 $0:获取当前执行shell脚本文件名,包括脚本路径 $n:当前shell脚本第n

    29510

    关于MySQL索引选择,先看看这十条建议

    如果你查询只涉及到 order_date,例如: SELECT * FROM orders WHERE order_date = '2020-01-01'; 那么这个查询将无法利用我们创建多列索引,...避免在频繁更新列上建立索引如果一个列值经常变化,那么每次值变化都需要更新索引,这将导致数据库性能下降。因此,尽量避免在更新频率高列上建立索引。...示例:假设我们有一个 users 表,其中有一个 last_login 列,这个列记录了用户最后一次登录时间。这个列值可能会经常变化,因为每次用户登录时,都会更新这个列值。...在这种情况下,如果我们在 last_login 列上创建一个索引,那么每次用户登录时,都需要更新这个索引。这将导致数据库性能下降,因为更新索引是一个相对耗时操作。...因此,尽管在 last_login 列上创建一个索引可能会加快某些查询速度(例如,查找最近登录用户),但由于这个列值经常变化,所以最好避免在这个列上创建索引。

    50810

    Django+Vue开发生鲜电商平台之7.用户登录和注册功能

    Github和Gitee代码同步更新: https://github.com/PythonWebProject/Django_Fresh_Ecommerce; https://gitee.com/Python_Web_Project...一、DRFtoken基本使用 1.DRFtoken登录原理 基于DRF前后端分离登录与单独使用Django登录原理不同,不再需要CSRF验证,DRF提供了许多开箱即用身份验证方案,并且还允许实现自定义方案...,使用基于Token身份验证方法,在服务端不需要存储用户登录记录。...显然,对于多个字段验证,如果某一个字段验证失败,则提示该字段错误信息,如果多个字段验证失败,则将这些字段错误信息都显示出来。...字段,但是在validate(attrs)又将其删去,导致在序列化时找不到code字段,因此出错,这是需要将字段write_only设置True,以确保在更新或创建实例时可以使用该字段,但是在序列化表示形式时不包括该字段

    4.4K20
    领券