我正在写一个方法来更新我的数据库中的多个实例中的几个字段。就目前而言,我试图让它为一个工作。项目不会更新数据库
我的用户上传一个包含所有要更改的信息的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设置为新的更新项目)。
您是否重写了POObject模型的保存方法? – schillingt
这可能只是在这里粘贴代码的工件,但是在'return pk'行之上的版本缩进太多了 - 它会发生在处理第一行CSV的末尾。 –
@schillingt我不重写保存方法 –