DjangoのListViewを使用して一覧表を表示し、検索機能を付けてみたいと思っています。
class DataListView(ListView): model = DataModel def get_context_data(self, **kwargs): context = super(DataListView, self).get_context_data(**kwargs) statuses = StatusModel.objects.all() context['statuses'] = statuses return context
表示されるデータには数種類の状態があり、それに基づいて一覧表を絞り込むような処理を考えています。
上記のコードのままであればページを表示した際に一覧表が表示されるのですが、
def get_queryset(self): results = self.model.objects.all() q_statuses = self.request.GET.getlist('status') if len(q_statuses) != 0: statuses = [x for x in q_statuses if x in ["1", "2", "3", "4"]] print(statuses) results = results.filter(status__in=statuses) return results
以上のコードを書き加えると、ページを表示した際には一覧表が表示されなくなってしまいました。
ページにアクセスした際には絞り込まずにすべてのデータの一覧を表示し、検索ボタンが押された際に指定された条件で絞り込まれた一覧を表示するようにしたいです。
```get_queryset``をオーバーライドすると、ページにアクセスした際に一覧を表示するということはできなくなるのでしょうか?
ご教示いただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。