gpt4 book ai didi

python - isinstance(datetime.datetime, DateTimeField.value) 对于 Django DateTimeField 始终返回 false

转载 作者:行者123 更新时间:2023-12-01 04:35:08 26 4
gpt4 key购买 nike

我认为这里可能缺少一些非常简单的东西,但我找不到它。

我的 django 项目中有一个自定义管理命令,它应该迭代 Record 模型的实例并将它们写入 xlsx 文件。

我正在使用 xlsxwriter,因此,我需要将 Record 实例中的 datetime.datetime 值转换为朴素对象。所以我想说“当您在 Record 模型中遇到 DateTimeField 时,使用 value.replace(tzinfo=None) 使对象变得简单在写之前”。

由于某种原因,我的 if isinstance(value, datetime.datetime) 永远不会返回 true,并且我从 xlsxwriter 收到关于天真/感知 日期时间对象。

相关代码如下:

示例管理命令.py

import pytz
import datetime
....
for i, row in enumerate(list(Record.objects.all())):

for j,field in enumerate(list(Record._meta.get_fields())):
value = getattr(row,field.name)
if isinstance(value, datetime.datetime):
value.replace(tzinfo=None)
worksheet.write(i, j, value)

else:
worksheet.write(i, j, value)

模型.py

class Record(models.Model):

time = models.DateTimeField()
manHoursScheduled = models.FloatField()
manHoursWorked = models.FloatField()
carsOvernight = models.IntegerField()
carsEvent = models.IntegerField()
dailyTransientIncome = models.FloatField()
dailyTransientCars = models.FloatField()
dailyTransientIncomePerCar = models.FloatField()

nightlyTransientIncome = models.FloatField(null=True)
nightlyTransientIncomePerCar = models.FloatField(null=True)

eventName = models.TextField(null=True)

facility = models.ForeignKey(Facility)

def __str__(self):
return self.facility.name

我很困惑我在这里做错了什么,所以我真的很感激任何帮助!

最佳答案

您似乎错过了将原始日期时间对象分配回value日期时间对象。

应该是

value = value.replace(tzinfo=None) # assign 'naive' datetime object back to 'value'

而不仅仅是

value.replace(tzinfo=None) # will just return 'naive' datetime object

代码现在变为:

import pytz
import datetime
....
for i, row in enumerate(list(Record.objects.all())):

for j,field in enumerate(list(Record._meta.get_fields())):
value = getattr(row,field.name)
if isinstance(value, datetime.datetime):
value = value.replace(tzinfo=None) # assign value as 'naive' datetime object
worksheet.write(i, j, value) # will now use 'naive' datetime object to write

else:
worksheet.write(i, j, value)

关于python - isinstance(datetime.datetime, DateTimeField.value) 对于 Django DateTimeField 始终返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31834993/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com