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')