2012-04-21 50 views
0

我的代碼:什麼時候.save()創建一個對象?

name = MakesiteNameForm(datdict) 
if name.is_valid: 
    name.save() 

datsite = Makesite.objects.get(sitename=request.POST['sitename']) 
datsite.ref_id.add(RefID.objects.create(url=request.POST['url'],description=request.POST['description'])) 
datsite.save() 

所以我有什麼代碼,我要用來創建和保存一些多對多的項目該位,但是當我嘗試使用這種方法是說,Makesite matching query does not exist。我認爲這意味着它沒有保存,但後來我打電話給site = Makesite.objects.all(),我可以清楚地看到request.POST['sitename']坐在querydict內的價值。那麼無論如何要更好地查詢這個?或者有什麼關於保存()我失蹤?

編輯:這種形式保存的值站點名的值到Makesite表

回答

1

保存()調用不會創建對象,它只是將對象保存到數據庫中,插入新行的情況下,這是一個新的對象,或更新它。

首先,form.is_valid()是一種方法,但你不會調用它,所以你總是試圖保存名字。這可能與您的錯誤有關,也可能與您的錯誤無關,但無論如何它都是錯誤的,也許這就是查詢錯誤來自的地方,而不是下面的get()調用。修復它,看看會發生什麼。

+0

啊,是啊,沒有解決它。感謝捕捉那個壽但是是的。仍然有這個錯誤。我認爲它與請求沒有任何關係。POST ['sitename']我認爲這需要其他東西? – city 2012-04-21 23:40:01

+0

然後你將不得不展示更多的代碼。除此之外,一切似乎都是正確的。 – 2012-04-22 00:38:24

+0

你需要看什麼? – city 2012-04-22 02:17:50

相關問題