我正在尝试更新数据库中的技能实体的两个datetimefields字段。我肯定是在传递一个等格式的日期时间字符串。当创建而不是更新时,一切都很好,但是在更新时我得到:
Exception Type: TypeError
Exception Value: fromisoformat: argument must be str下面是引发TypeError的代码:
# create or update skill
created = ibm_date_to_iso(clean_data["skill"]["created"])
updated = ibm_date_to_iso(clean_data["skill"]["updated"])
try:
skill = Skill.objects.get(
skill_id=clean_data["skill"]["skill_id"],
snapshot=clean_data["skill"]["snapshot"]
)
# update fields if skills exists already
skill.name = clean_data["skill"]["name"],
skill.type = clean_data["skill"]["type"],
skill.status = clean_data["skill"]["status"],
skill.created = created,
skill.updated = updated,
skill.language = clean_data["skill"]["language"],
skill.description = clean_data["skill"]["description"],
skill.dialog_settings = clean_data["skill"]["dialog_settings"]
skill.uploads.add(u)
except Skill.DoesNotExist:
skill = Skill(
skill_id=clean_data["skill"]["skill_id"],
name=clean_data["skill"]["name"],
type=clean_data["skill"]["type"],
status=clean_data["skill"]["status"],
created=created,
updated=updated,
language=clean_data["skill"]["language"],
snapshot=clean_data["skill"]["snapshot"],
description=clean_data["skill"]["description"],
dialog_settings=clean_data["skill"]["dialog_settings"]
)
skill.save()
skill.uploads.add(u)
# new page for the skill entity
page = Page(
title="notes for Skill {} snap {}".format(
skill.name,
skill.snapshot),
content="This page is empty..."
)
page.save()
skill.save()只有当未引发skill.save异常时,才会在最后一行( DoesNotExist ())引发异常。
以下是技能模型:
class Skill(models.Model):
skill_id = models.CharField(max_length=36)
name = models.TextField()
type = models.TextField()
status = models.TextField()
created = models.DateTimeField()
updated = models.DateTimeField()
language = models.TextField()
snapshot = models.IntegerField()
description = models.TextField()
dialog_settings = models.TextField()
page = models.ForeignKey(
"Page",
on_delete=models.SET_NULL,
default=None,
null=True,
blank=True)
uploads = models.ManyToManyField(
"upload",
blank=True,
default=None)
class Meta:
constraints = [
models.UniqueConstraint(
fields=["skill_id", "snapshot"],
name="unique_skill_snapshot")
]在检查调试数据时,引发TypeError的最终行位于Django代码库中:
assistant_doc/python_env/lib/python3.8/site-packages/django/utils/dateparse.py, line 116, in parse_datetime
return datetime.datetime.fromisoformat(value)
…
Local vars
Variable Value
value ('2022-01-21T10:07:32.045000',)如您所见,“value”参数已更改为包含异构体字符串的元组。这是Django的窃听器吗?
发布于 2022-04-18 00:25:14
我也有同样的问题。结果发现,在任务语句的末尾,我有一个后缀逗号。
在您的代码中,错误如下:
skill.name = clean_data["skill"]["name"], # <-- comma here!当逗号位于变量的末尾时,Python会创建一个元组。
https://stackoverflow.com/questions/71068504
复制相似问题