首页 > 其他分享 >django中设置字段动态默认时间的四种方式

django中设置字段动态默认时间的四种方式

时间:2023-06-14 17:34:21浏览次数:45  
标签:datetime auto 默认 django default 设置 now True 四种

1.create_time_one = models.DateTimeField('创建时间', default=datetime.now())
2.update_time_one = models.DateTimeField('更新时间', default=datetime.now)
 
3.create_time_tow = models.DateTimeField('创建时间', auto_now_add=True)
4.update_time_tow = models.DateTimeField('更新时间', auto_now=True)
  1. default=datetime.now()

    model每次初始化,都会自动设置该字段的默认值为初始化时间。

  2. default=datetime.now

    model每次进行新增或修改操作,都会自动设置该字段的值为操作时间。设置后仍可以使用ORM手动修改该字段。

  3. auto_now_add=True

    默认值为False,若设置为True,model每次进行新增操作,都会自动设置该字段的值为操作时间。设置为True后无法使用ORM手动修改该字段,哪怕填充了字段的值也会被覆盖。

  4. auto_now=True

    默认值为False,若设置为True,model每次进行新增或修改操作,都会自动设置该字段的值为操作时间。设置为True后无法使用ORM手动修改该字段,哪怕填充了字段的值也会被覆盖。

  5. 除非想设置动态默认时间为项目的启动时间,否则default=datetime.now()这种用法是错误的,会得到期望之外的结果。
    使用User.objects.update方法时,设置的default=datetime.now和auto_now=True都不会生效,由于设置了auto_now=True的字段不能手动修改,此时只能使用save方法修改数据,这对于多个数据的更新是不友好的。
    因此如果设置动态默认时间的字段,应该使用default=datetime.now和auto_now_add=True来实现。

转自:https://blog.csdn.net/kunwen123/article/details/121102159

标签:datetime,auto,默认,django,default,设置,now,True,四种
From: https://www.cnblogs.com/shaoyishi/p/17480894.html

相关文章

  • mac 改变默认终端主题
    oh-my-zshsh-c"$(curl-fsSLhttps://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"修改背景颜色打开终端右键背景-》检查显示器-》双击喜欢的背景-》设置默认......
  • mybatis批量插入的四种方式
    一、循环插入publicvoidinsert(List<User>userList){userList.forEach(user->userDao.insert(user));}<insertid="insert">INSERTINTO`demo`.`user`(`username`,`address`,`remark`,`age`,`create_time`)VALUES(#{u......
  • ZYNQ 裸机模式下修改默认uart端口
    ##背景调试ZYNQ裸机code,调用printf()后在UART端口无法看到打印信息输出,查看原理图后发现,板子用的UART1作为默认串口调试接口,UART0分配给了RS485使用,因此需要修改默认的STD接口到UART0,那么如何修改呢? ##修改默认STD的UART接口打开bsp中的,mss文件,然后选择modifythi......
  • Linux系统下如果在编译时指定程序运行时动态链接库相对目录,及为程序收集默认不安装动
    1、在编译中指定编译的程序去查找的动态链接库目录qmake是这样指定运行时动态库目录的:  QMAKE_LFLAGS+=-Wl,-rpath=/usr/local/ultrasec/policyfilter/lib/ 2、用lddPROG  查看程序的动态链接库,如果没有的动态链接库,就从其它计算机或者网络上找这个库,然后拷贝到指......
  • 更改sentinel 默认端口号(8080)
    不少小伙伴在微服务中使用sentinel都会碰到8080端口被占用的问题。找到sentinel-dashboard.jar包,在当前目录打开cmd,在控制台输入以下命令将默认的端口号改为8070,这个端口号可以自己选择,不被占用的端口号均可。java-Dserver.port=8070-Dcsp.sentinel.dashboard.server=loca......
  • 【Linux】——安装Anaconda后默认不进入conda环境方法
    1安装conda后取消命令行前出现的base,取消每次启动自动激活conda的基础环境。通过将auto_activate_base参数设置为false实现:condaconfig--setauto_activate_basefalse那要进入的话通过condaactivatebase如果反悔了还是希望base一直留着的话通过condaconfig--setau......
  • 如何使用默认提示框Alert
    如何使用默认提示框AlertAlert是JavaFX自带的一个窗口,提供了一些默认的样式供我们选择:提示框确认框错误框默认情况下,当打开一个Alert时,其他的窗口无法进行操作。我们还可以获取对Alert窗口操作的结果。效果展示示例代码importjava.util.Optional;importjav......
  • 【Django学习笔记】-环境搭建
    对于初学django新手,根据以下步骤可以快速进行Django环境搭建虚拟环境创建使用virtualenv创建并启用虚拟机环境,关于virtualenv可参考https://www.yuque.com/binowen/tn8zvy/insclepipinstallvirtualenvvirtualenv./envsourceenv/bin/activate创建project1.使用pipinstall安装......
  • 手写 Django orm反向迁移 MySQL
    importpymysql,os####settingsdb={'NAME':'','USER':'','PASSWORD':'','HOST':'','PORT':'',}table_name_list=[]#表名列表......
  • django views 序列化
      RESTframework中的序列化类与Django的Form和ModelForm类非常相似。我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSerializer类,它为创建处理模型实例和查询集的序列化提供了有效的快捷方式。Serializers 序列化器允许把像查询......