2013-10-25 117 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

哇。感到有點慚愧,我沒有弄清楚這一點。我已經忘記了我是如何設計我的一個模型的,並且還有另一個需要更新的對象,但我沒有保存它。