2016-09-05 2 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_empty для False:

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

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

Это поднимет Http404 если результат get_queryset() пуст (имеет длину 0).

Смежные вопросы