Django Rest Framework-以str形式发送的日期时间在保存到数据库时会更改为不同的时区



我发送了以下内容:

{'ticker': 'XYZ', 'last_price': 394.05, 'last_date_time': '2022-10-04 15:57:18'}

当它被保存在DB:中时

ticker: XYZ
last_price: 394.05
last_date_time: 2022-10-04 11:57:18

我不知道这是如何或为什么改变的。

型号.py

class StockPriceModel(models.Model):
ticker = models.CharField(max_length=30, blank=False, db_index=True)
last_price = models.FloatField(blank=True, null=True)
last_date_time = models.DateTimeField(db_index=True)
created_at = models.DateTimeField(auto_now_add=True)

auto_now_add字段也显示错误的时间。

它与我在以下设置中的日期时间设置不一致:

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Dubai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Django将日期时间存储在UTC时区。详见本文档。由于您将'Asia/Dubai'指定为默认时区。Django将接收值视为"亚洲/迪拜"时间,并在保存之前将其转换为UTC。如果您需要更改此逻辑,请尝试在序列化程序的DateTimeField字段中使用default_timezone参数:
class MySerializer:
last_date_time = DateTimeField(default_timezone=pytz.utc)

最新更新