我正在编写一个方法来更新数据库中多个实例中的多个字段。现在,我正试图让它只为一个工作。
我的用户上传了一个包含要更改的所有信息的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
,它看起来很好,但如果我再次查询服务器(保存后),即dong item2=POObject.objects.get(pk=pk)
,它将不会有任何更新。有谁知道为什么save()
没有做任何事情?
更新: 这个谜团还在继续。 如果我更新一个未包含在FK关系中的字段(比如文本字段或其他内容),一切似乎都能正常工作。但是,我真正需要做的是更新项目,然后将该项目设置为与相关主项目的fk关系。我不确定为什么这不能正常工作(更新内部项目,保存它,然后将fk设置为新的更新项目)。
答案 0 :(得分:0)
哇。觉得有点惭愧,我没想到这一点。我忘记了我是如何设计我的一个模型的,其中还有另一个需要更新的对象,但我没有保存它。