2016-09-05 5 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を持っています)。

関連する問題