zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    线程练习-网络买票
    永久储存信息(已完善)
    Linux命令
    oracle(3)
    小结
    java开发中中文编码问题
    double保留两位小数
    oracle(2)
    javadate相关
    分布式
  • 原文地址:https://www.cnblogs.com/shengulong/p/11487686.html
Copyright © 2011-2022 走看看