2016-12-17 9 views
0

편집 됨 : 장고 개체 중 하나의 단일 필드 값을 업데이트하려고합니다.장고보기에서 단일 개체 필드 업데이트

TemplateDoesNotExist at /8/complete list/todo_detail.html

어떻게이 문제를 방지 할 수 있습니다

class TodoCompleteView(generic.DetailView):   
    queryset = Todo.objects.all() 

    def get_object(self): 
     # Call the superclass 
     object = super(TodoCompleteView, self).get_object() 
     # Record the last accessed date 
     object.todo_completed = True 
     object.save() 
     # Return the object 
     return object 

그러나, 나는 오류가 계속 : 다음 코드는? 이 뷰가 DB의 특정 값을 뒤집기를 원할뿐입니다.

+0

데이터베이스를 이전 했습니까? –

+0

예. 나는 또한 방금 다시 확인했다. 변경 사항 없음. – MadPhysicist

+0

'objects'가'NoneType' 일 수있는 이유를 모르겠습니다. 전체 스택 추적을 보여줄 수 있습니까? –

답변

3

DetailView 클래스에서보기를 상속합니다.이 모델은 기본적으로 일부 모델 만보고 변경하지 않습니다. 또한, 분명히, 당신은 GET 데이터 변경 요청을 사용합니다. 이것은 잘못된 접근법입니다.

또는 SingleObjectMixinView에서보기를 상속 받고 수동으로 POST 요청에 대한 처리기를 만드는 것이 좋습니다.

I는 다음과 같이 귀하의 예제를 다시 작성할 것 :

from django.views.generic import View 
from django.views.generic.detail import SingleObjectMixin 

class TodoCompleteView(SingleObjectMixin, View): 
    model = Todo 

    def post(self, *args, **kwargs): 
     self.object = self.get_object() 
     self.object.todo_completed = True 
     self.object.save(update_fields=('todo_completed',)) 
     return HttpResponse(status=204) 

P.S.을 DetailView 서브 클래스가 SingleObjectTemplateResponseMixin이고 서브 템플릿이 인 렌더링을 시도하기 때문에 오류가 발생합니다.

관련 문제