我正在努力为我在这里要做的事情找出正确的解决方案,并非常感谢您的帮助。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