저는 여기서하려고하는 것에 대한 올바른 해결책을 찾기 위해 애 쓰고 있습니다. 정말 도움이됩니다.Django : get_object_or_404 올바른 해결책이 아니지만 무엇입니까?
현재 DB에서 "Special"을 가져와 브라우저에 표시하는 작업 시스템이 있습니다. 사용자는 브라우저에서 "Special"을 편집하여 db에 제출할 수 있습니다. 그런 다음 변경 사항이 사용자에게 표시됩니다.
DB에 기존의 "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 오류를 반환하기 때문에 어떠한 기존의 "특수"없기 때문에 "특별"의 업데이트가 작동하지 않는 이유는 것을 알고 DB에.
DB에 기존 "Special"이있는 경우 함수를 중단하지 않고이 문제를 해결하는 가장 좋은 방법을 찾으려면 잠시 노력해 왔습니다.
지금까지, 나는try
과
except
으로
get_object_or_404
를 교체하려고했지만, 나는 다음과 같은
'unicode' has no attribute 'save()'
으로 저장 기능 문제로 실행합니다.
myActiveSpecial, just_created = SpecialOffer.objects.get_or_create(product=myProduct, active=True)
또는이 같은 시도 할 수 :
myActiveSpecial = get_object_or_404(SpecialOffer.objects.filter(product=myProduct).filter(
active=True))
로 :
OK, 그래서 지금은이 : 'myActiveSpecial = SpecialOffer.objects.필터 (제품 = myProduct) .filter ( 활성화 = 참) 반환 HttpResponse에 (myActiveSpecial, 마임 = '텍스트/일반') ' 이 하지만 좀 더 구체적으로 수 원 – Erve1879
라운드 갈 것 같다 "무엇을 갈 않습니다 동그라미에 둥근 "정말 의미? 또한, myActiveSpecial을 다시 가져올 필요가 없다고 생각됩니다. – frnhr
죄송합니다. 기본적으로 특수 기능을 변경하는 JS 함수는 새 값을 올바르게 반환하지만 새 값은 db에 저장되지 않습니다. 페이지를 다시로드하면 이전 스페셜이 표시됩니다. 그런 다음 스페셜을 다시 업데이트하려고하면 새 스페셜을 이전 스페셜에 추가하는 것처럼 보입니다 ...하지만 여전히 저장하지는 않습니다. – Erve1879