Django中timezone.now()返回服务器启动时间的解决方法
解决Django模型初始日期不动态更新的问题
问题根源:你如果写成
date_field = models.DateTimeField(default=timezone.now()),timezone.now()会在服务器启动加载模型时就执行一次,结果被固定成启动时的时间,后续创建对象不会重新计算。正确写法1:直接传入函数对象(不带括号)
from django.db import models from django.utils import timezone class YourModel(models.Model): created_at = models.DateTimeField(default=timezone.now)这样Django会在每次创建对象时调用
timezone.now(),返回当前的时间。正确写法2:用
auto_now_add参数(更适合记录创建时间)
如果这个字段是用来记录对象的创建时间,推荐用Django内置的auto_now_add=True,它会自动在对象首次创建时设置当前时间,且默认是不可编辑的:class YourModel(models.Model): created_at = models.DateTimeField(auto_now_add=True)
内容的提问来源于stack exchange,提问作者Mademuhas
相关产品推荐
相关产品推荐

