Skip to content

Instantly share code, notes, and snippets.

@gladson
Created July 19, 2012 05:25
Show Gist options
  • Save gladson/3140945 to your computer and use it in GitHub Desktop.
Save gladson/3140945 to your computer and use it in GitHub Desktop.
using Class Based Generic ListView to seach forms and List
....
from django.views.generic import ListView
from sgf.utils.decorators import page, permission_required_sgf
from sgf.administrativo.models import ComiteRegional
from sgf.administrativo.forms import FormComiteRegionalBusca
......
class SearchListView(ListView):
form_class = None
def get_context_data(self, **kwargs):
context = super(SearchListView, self).get_context_data(**kwargs)
context['frm_srch'] = self.get_form()
qs_data = context['frm_srch'].data
context['query_string'] = ''
if qs_data:
qs_data.pop('page', '1')
context['query_string'] = qs_data.urlencode()
return context
def get_queryset(self):
if self.form_class is None:
return super(SearchListView, self).get_queryset()
return self.get_form().get_queryset()
def get_form(self):
#if not hasattr(self, '_inst_form'):
# setattr(self, '_inst_form', self.form_class(self.request.GET.copy() or None))
#return self._inst_form
return self.form_class(self.request.GET.copy() or None)
class ComiteRegionalLista(SearchListView):
form_class = FormComiteRegionalBusca
paginate_by = 10
template_name = "administrativo/comiteregional/comiteregional_lista.jinja"
comiteregional_lista = ComiteRegionalLista.as_view()
###################### FORM
class FormComiteRegionalBusca(forms.Form):
texto = forms.CharField(max_length=100, required=False,)
def get_queryset(self):
object_list = ComiteRegional.objects.all()
if self.is_valid():
if self.cleaned_data['texto']:
object_list = object_list.filter(nome__icontains=self.cleaned_data['search_text'])
return object_list
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment