2013-10-25 119 views
1

我正在写一个方法来更新我的数据库中的多个实例中的几个字段。就目前而言,我试图让它为一个工作。项目不会更新数据库

我的用户上传一个包含所有要更改的信息的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

您是否重写了POObject模型的保存方法? – schillingt

+0

这可能只是在这里粘贴代码的工件,但是在'return pk'行之上的版本缩进太多了 - 它会发生在处理第一行CSV的末尾。 –

+0

@schillingt我不重写保存方法 –

回答

0

哇。感到有点惭愧,我没有弄清楚这一点。我已经忘记了我是如何设计我的一个模型的,并且还有另一个需要更新的对象,但我没有保存它。