• django model的update时auto_now不被更新的原因


    gmt_create自动添加auto_now_add;gmt_modify自动更新auto_now

    class CommonInfo(models.Model):
    """基类,提供共同信息,不会创建真实的table"""
    
    class Meta:
        # 声明自己为抽象基类
        abstract = True
        # 下面表示先根据更新时间gmt_modify降序排序,如果更新时间相同,再根据创建时间gmt_create降序排序
        ordering = ['-gmt_modify', '-gmt_create']
    
    gmt_create = models.DateTimeField('创建时间,自动创建', auto_now_add=True, null=True, help_text='创建时间')
    # 使用save可以达到自动更新的效果,使用update不会自动更新,因此需要携带上这个字段
    gmt_modify = models.DateTimeField('更新时间,自动更新', auto_now=True, null=True, help_text='更新时间')
    

    django的orm关于更新数据库的方法有update和save两种方法。

    使用save时会自动更新

    obj = User.objects.get(id=1)
    obj.name='xxx'
    obj.save()
    save()时确实会自动更新当前时间
    这是因为这个操作它经过了model层
    

    使用update不会自动更新;因此需要在使用filter的update更新的时候同时赋值时间为datetime.datetime.now()

    如果用django filter的update(通常为批量更新数据时)则是因为直接调用sql语句 不通过 model层
    User.objects.filter(id=1).update(username='xxx')
  • 相关阅读:
    layDate 只显示 小时&分钟
    获取从今天以后一周的日期列表
    Laravel_$rules参数规则
    Layui——分步表单
    XML命名空间详解
    centos7搭建svn服务器
    jvm原理
    动态代理与反射
    java之JUC
    实现从数据库加载数据并返回easyui-tree所需要数据
  • 原文地址:https://www.cnblogs.com/shengulong/p/11487686.html
Copyright © 2020-2023  润新知