Django: Search form in Class Based ListView

前端 未结 7 2137
遥遥无期
遥遥无期 2020-12-04 13:22

I am trying to realize a Class Based ListView which displays a selection of a table set. If the site is requested the first time, the dataset should be displaye

7条回答
  •  Happy的楠姐
    2020-12-04 13:55

    Search on all fields in model

    class SearchListView(ItemsListView):
    
    # Display a Model List page filtered by the search query.
    
    def get_queryset(self):
        fields = [m.name for m in super(SearchListView, self).model._meta.fields]
        result = super(SearchListView, self).get_queryset()
        query = self.request.GET.get('q')
        if query:
            result = result.filter(
                reduce(lambda x, y: x | Q(**{"{}__icontains".format(y): query}), fields, Q())
            )
        return result
    

提交回复
热议问题