2016-09-05 3 views
0

때로는 아무것도 반환하지 않는 일반 뷰가 있습니다.Django : 일반 뷰에서 빈 쿼리 세트 처리

어떻게 효과적으로 처리하고 404를 발생시킬 수 있습니까?

내 접근 방식은 성공적이지만 데이터베이스를 조회합니다.

class MyListView(ListView): 
    template_name = 'template/quest.html' 

    def get_queryset(self, *args, **kwargs): 

     query = MyModel.objects.filter(
      ... 
     ).filter(
      ... 
     ) 

     if query.exists(): 
      return query 
     else: 
      raise Http404 

답변

2

설정 allow_emptyFalse에 : get_queryset()의 결과가 비어있는 경우

class MyListView(ListView): 
    allow_empty = False 
    template_name = 'template/quest.html' 

    def get_queryset(self, *args, **kwargs): 
     return MyModel.objects.filter(...) 

이것은 Http404을 올릴 것이다 (길이가 0이있다).