我正在寫一個方法來更新我的數據庫中的多個實例中的幾個字段。就目前而言,我試圖讓它爲一個工作。項目不會更新數據庫
我的用戶上傳一個包含所有要更改的信息的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我不重寫保存方法 –