我正在编写一种方法来更新数据库中多个实例中的多个字段。现在,我正试图让它只为一个人工作。
我的用户上传了一个 CSV 文件,其中包含要更改的所有信息(包括 pk)。我已经编写了解析所有信息的函数,这一切都很好。我什至可以将数据分配给一个项目,如果我从该功能打印它,它就会正确输出。但是,当我保存更新(使用item.save()
)时,数据库中似乎没有任何变化。
这是该方法的一个非常精简的版本。我真的不知道为什么它不起作用。我在其他地方做了一些非常相似的事情(通过表单获取数据、设置字段、调用保存,然后显示更改的信息),并且我使用了非常相似的 CSV 上传技术来创建新条目。
一小段相关代码:
reader = csv.reader(f)
for row in reader:
pk = row[0]
print(pk)
item = POObject.objects.get(pk=pk)
p2 = item.purchase2
print item.purchase.requested_start_date
print p2.requested_start_date
requested_start_date=row[6]
requested_start_date = datetime.datetime.strptime(requested_start_date, "%d %b %y")
print requested_start_date
p2.requested_start_date = requested_start_date
p2.save()
print p2.requested_start_date
item.purchase2 = p2
item.save()
print item.purchase.requested_start_date
return pk
很明显,我有很多照片可以找出哪里出了问题。基本上我发现,如果我查看item
它,它看起来很好,但是如果我再次查询服务器(保存后),即item2=POObject.objects.get(pk=pk)
它不会有任何更新。有谁知道为什么save()
什么都不做?
更新:谜团仍在继续。如果我更新不包含在 FK 关系中的字段(例如,文本字段或其他内容),一切似乎都可以正常工作。但是,我真正需要做的是更新一个项目,然后将该项目设置为与所讨论的主要项目的 fk 关系。我不确定为什么这不能以正常方式工作(更新内部项目,保存它,然后将 fk 设置为新的更新项目)。