Django在DateField的auto_now_add中使用哪个时区?

Neo*_*ang 7 python django timezone django-models

当字段标有auto_now_add属性时,Django如何写日期字段?

是喜欢datetime.now().date()还是timezone.now().date()

换句话说,它用于获取当前日期的时区?

dge*_*gel 4

看起来它使用datetime.date.today(),这将是系统的本地日期:

db/models/fields/__init__.py

class DateField(Field):
    ...
    def pre_save(self, model_instance, add):
        if self.auto_now or (self.auto_now_add and add):
            value = datetime.date.today()
            setattr(model_instance, self.attname, value)
            return value
Run Code Online (Sandbox Code Playgroud)

如果您想要不同的行为,您可以删除auto_now_add=True然后将模型的pre_save信号连接到接收器,该接收器会将您的字段设置为您选择的日期。

或者,您可以重写模型的save方法并在那里设置字段。