2016-08-13 11 views
0

この質問の優れた説明は、 Dynamically filter ListView CBV in Django 1.7です。Djangoの動的フィルタリングとデフォルトのクエリーセット

しかし、私はクエリーセットで余分な助けを得ることはできませんでした。

# urls.py 
    urlpatterns = patterns('', 
     url(r'^(?P<exp>[ASG])$', \ 
      ScholarshipDirectoryView.as_view(),\ 
      name='scholarship_directory'),) 

# views.py 
class ScholarshipDirectoryView(ListView): 
    queryset= Scholarship.objects.all() 
    model = Scholarship 
    template_name = 'scholarship-directory.html' 

    def get_queryset(self): 
     qs = super(ScholarshipDirectoryView, self).get_queryset() 
     return qs.filter(experience_level__exact=self.kwargs['exp']) 

URLに「exp」パラメータがない場合の標準クエリーセットにフォールバックするDRY方法は何ですか?

私は、完全なQuerysetとCustom/Filer Querysetの追加のビューや追加のURLパターンは意味をなさないと考えているので、このアプローチを採用したいと思います。

答えて

0

ifに貼り付けてください。

qs = super(ScholarshipDirectoryView, self).get_queryset() 
    exp = self.kwargs['exp'] 
    if exp: 
     qs = qs.filter(experience_level__exact=exp) 
    # return the new or the old queryset. 
    return qs 
+0

はい、私は知っていますが、ドライですか? @ダニエル・ローズマン – villancikos

+0

何が繰り返されていますか? –

+0

あなたは正しいです。何も繰り返されていません。私はそれが動作するようになっていないが。それは完全なqsを返します。 – villancikos

関連する問題