我正在努力爲我在這裏要做的事情找出正確的解決方案,並非常感謝您的幫助。Django:get_object_or_404不是正確的解決方案,但是什麼?
目前,我有一個工作系統,從數據庫中獲取「特殊」並將其顯示在瀏覽器中。用戶可以在瀏覽器中編輯「特殊」並將其提交給數據庫。然後,該更改將顯示給用戶。
問題是如果數據庫中沒有預先存在的「Special」,「Special」不會更新。在我的views.py我有:
def changeSpecialOffer(theRequest):
myProductUuid = theRequest.POST['myProductUuid']
myNewSpecialOffer = theRequest.POST['myNewSpecialOffer']
myProduct = get_object_or_404(Product, uuid=myProductUuid)
myActiveSpecial = get_object_or_404(SpecialOffer.objects.filter(product=myProduct).filter(
active=True))
try:
myActiveSpecial.special = myNewSpecialOffer
myActiveSpecial.save()
except:
return HttpResponse(myActiveSpecial, mimetype='text/plain')
myActiveSpecial = SpecialOffer.objects.filter(product=myProduct).filter(
active=True)
return HttpResponse(myActiveSpecial, mimetype='text/plain')
我知道,「特別」的更新不能正常工作的原因是因爲get_object_or_404
正確返回404錯誤,因爲沒有預先存在的「特殊」在分貝。
我一直在嘗試一段時間來找出解決這個問題的最佳方法,而不會在數據庫中存在「特殊」情況下中斷功能。
到目前爲止,我已經試過try
和except
更換get_object_or_404
,但我再碰上與保存功能問題,如'unicode' has no attribute 'save()'
。
好了,現在我有: 'myActiveSpecial = SpecialOffer.objects。過濾器(產品= myProduct的).filter( 活躍= TRUE) 返回的HttpResponse(myActiveSpecial,MIME類型= 'text/plain的')' 但似乎團團轉 – Erve1879 2012-08-12 13:47:01
你能更具體,什麼是去「圓圈「真的意味着什麼?此外,在我看來,你根本不需要重新獲取'myActiveSpecial'。 – frnhr 2012-08-12 14:08:11
對不起 - 不是很具描述性!基本上,更改特殊的JS函數會正確返回新值,但新值不會保存在數據庫中。重新加載頁面後,顯示舊的特殊功能。如果您再嘗試再次更新特殊功能,它似乎將新的特殊功能添加到舊功能中......但仍然無法保存。 – Erve1879 2012-08-12 14:18:13