반응형
Django의 사용자 지정 관리자에서 DoesNotExist 예외 잡기
Django 모델에 대한 사용자 지정 관리자가 있습니다. 여기서 DoesNotExist 예외를 잡을 수없는 것 같습니다. 모델 내부에서 수행하는 방법을 알고 있지만 여기서는 작동하지 않았습니다.
class TaskManager(models.Manager):
def task_depend_tree(self, *args, **kwargs):
if "id" in kwargs:
try:
task = self.get(id=kwargs["id"])
except DoesNotExist:
raise Http404
Get_object_or_404도 작동하지 않습니다. 여기서 무엇이 잘못 되었습니까?
ObjectDoesNotExist
대신 DoesNotExist
또는 가능하게 사용하십시오 self.DoesNotExist
. 다른 모든 것이 실패하면 바닐라를 잡아서 Exception
type ()인지 평가하십시오.
from django.core.exceptions import ObjectDoesNotExist
panchicore가 제안했듯이 self.model
갈 길입니다.
class TaskManager(models.Manager):
def task_depend_tree(self, *args, **kwargs):
if "id" in kwargs:
try:
task = self.get(id=kwargs["id"])
except self.model.DoesNotExist:
raise Http404
objects = MyManager()
MyManager 클래스 내에서 self.model을 할당 한다고 말할 때 Manager.model (self.model) 인스턴스에서 DoesNotExist를 사용할 수 있습니다 .
try:
task = self.get(id=kwargs["id"])
return task
except self.DoesNotExist:
return None
GenericViewSet을 사용하여 목록 메서드 (DRF)에서이를 구현해야하고 빈 목록을 반환해야하는 경우 다음을 사용합니다.
def list(self, request, *args, **kwargs):
self.get_object() # I use this to trigger the object_permission
try:
queryset = self.queryset.filter(user=(YourModel.objects.get(user=request.user).user))
except YourModel.DoesNotExist:
return Response(YourModel.objects.none())
serializer = YSourModelSerializer(queryset, many=True)
return Response(serializer.data)
반응형
'programing' 카테고리의 다른 글
NetBeans에서 마우스 호버에 대한 Javadoc 문서를 보는 방법은 무엇입니까? (0) | 2021.01.18 |
---|---|
얼굴 감지에서 Haar Cascades 대 LBP Cascades (0) | 2021.01.18 |
JsonNode에서 새 노드를 삽입하는 방법은 무엇입니까? (0) | 2021.01.17 |
특정 요소를 터치 할 때 스크롤 비활성화 (0) | 2021.01.17 |
Chrome 브라우저에서로드되지 않는 반응 개발 도구 (0) | 2021.01.17 |