AttributeError: 'int' object has no attribute 'timetuple'
AttributeError: 'int' object has no attribute 'timetuple'
快速说明:此错误可能与 this thread 有点关联,但用例与 python 版本(另一个仍为 v2)不同。其他类似的线程不特别关注 python datetime
.
我有以下代码:
import datetime
from .models import RaceData, RacerData
@periodic_task(crontab(minute='*/15'))
def record_racedata():
team = nitrotype.Team('PR2W')
timestamp = datetime.datetime.now() # timestamp
for members in team.data["members"]:
rcd = RaceData(
timestamp=timestamp,
)
rcd.save()
@periodic_task(crontab(minute='*/15'))
def record_racerdata():
timestamp = datetime.datetime.now() # timestamp
for members in team.data["members"]:
rcrd = RacerData(
timestamp=timestamp,
)
rcrd.save() # error comes from here
型号:
class RaceData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = UnixDateTimeField()
class RacerData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = UnixDateTimeField()
我得到以下输出:
AttributeError: 'int' object has no attribute 'timetuple'
最让我困惑的是第一次包含 timestamp
怎么没有出现错误,但也许执行不是从上到下。
无论如何,我相信我已经适当地初始化了 timestamp
变量。有人可以帮忙吗? 请注意,我不能在任何一个函数之外定义 timestamp
,因为我需要时间戳随着定期调用的函数不断更新。
EDIT 我在别处看到这个错误是因为在代码的别处使用了命名空间 datetime
,但我的问题不是这样。
提前致谢。
这似乎是我使用的依赖项 (UnixDateTimeField
) 的问题,因为抛出的错误指向我的虚拟环境中的包。
我求助于将时间存储在整数字段中:
import datetime
from .models import RaceData, RacerData
@periodic_task(crontab(minute='*/15'))
def record_racedata():
team = nitrotype.Team('PR2W')
timestamp = datetime.now().timestamp() # converts datetime into unix
for members in team.data["members"]:
rcd = RaceData(
timestamp=timestamp,
)
rcd.save()
@periodic_task(crontab(minute='*/15'))
def record_racerdata():
timestamp = datetime.now().timestamp()
for members in team.data["members"]:
rcrd = RacerData(
timestamp=timestamp,
)
rcrd.save() # error comes from here
型号:
class RaceData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = IntegerField()
class RacerData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = IntegerField()
仍然欢迎任何解决方案,但在浏览了其他几个关于 SO 的问题后,我得出的解决方案是将 UNIX 时间戳存储为整数是最简单的解决方案。假设初始 UNIX 时间戳已验证,您始终可以按照 here 所述将整数转换回 datetime
。
仍然感谢所有试图回答问题的人。
快速说明:此错误可能与 this thread 有点关联,但用例与 python 版本(另一个仍为 v2)不同。其他类似的线程不特别关注 python datetime
.
我有以下代码:
import datetime
from .models import RaceData, RacerData
@periodic_task(crontab(minute='*/15'))
def record_racedata():
team = nitrotype.Team('PR2W')
timestamp = datetime.datetime.now() # timestamp
for members in team.data["members"]:
rcd = RaceData(
timestamp=timestamp,
)
rcd.save()
@periodic_task(crontab(minute='*/15'))
def record_racerdata():
timestamp = datetime.datetime.now() # timestamp
for members in team.data["members"]:
rcrd = RacerData(
timestamp=timestamp,
)
rcrd.save() # error comes from here
型号:
class RaceData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = UnixDateTimeField()
class RacerData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = UnixDateTimeField()
我得到以下输出:
AttributeError: 'int' object has no attribute 'timetuple'
最让我困惑的是第一次包含 timestamp
怎么没有出现错误,但也许执行不是从上到下。
无论如何,我相信我已经适当地初始化了 timestamp
变量。有人可以帮忙吗? 请注意,我不能在任何一个函数之外定义 timestamp
,因为我需要时间戳随着定期调用的函数不断更新。
EDIT 我在别处看到这个错误是因为在代码的别处使用了命名空间 datetime
,但我的问题不是这样。
提前致谢。
这似乎是我使用的依赖项 (UnixDateTimeField
) 的问题,因为抛出的错误指向我的虚拟环境中的包。
我求助于将时间存储在整数字段中:
import datetime
from .models import RaceData, RacerData
@periodic_task(crontab(minute='*/15'))
def record_racedata():
team = nitrotype.Team('PR2W')
timestamp = datetime.now().timestamp() # converts datetime into unix
for members in team.data["members"]:
rcd = RaceData(
timestamp=timestamp,
)
rcd.save()
@periodic_task(crontab(minute='*/15'))
def record_racerdata():
timestamp = datetime.now().timestamp()
for members in team.data["members"]:
rcrd = RacerData(
timestamp=timestamp,
)
rcrd.save() # error comes from here
型号:
class RaceData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = IntegerField()
class RacerData(models.Model):
id = models.BigAutoField(primary_key=True)
timestamp = IntegerField()
仍然欢迎任何解决方案,但在浏览了其他几个关于 SO 的问题后,我得出的解决方案是将 UNIX 时间戳存储为整数是最简单的解决方案。假设初始 UNIX 时间戳已验证,您始终可以按照 here 所述将整数转换回 datetime
。
仍然感谢所有试图回答问题的人。