greathector7

metodo para filtros dinamicos

May 1st, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.12 KB | None | 0 0
  1. class NacimientosView(ListView):
  2.     """Vista partidas de nacimientos pero filtrados desde un formulario"""
  3.     # queryset = PartidaNacimiento.objects.filter(folio=457).filter(ano=1980)
  4.     model = PartidaNacimiento
  5.     template_name = 'rcivil/nacimientos_listado.html'
  6.     paginate_by = 10
  7.     ordering = 'ano'
  8.  
  9.     def get_queryset(self):
  10.         CAMPOS = {
  11.             'tomo': {'lookup': 'exact', 'cast': str},
  12.             'folio': {'lookup': 'icontains', 'cast': str},
  13.             'ano': {'lookup': 'exact', 'cast': str}
  14.         }
  15.         # la funcion super() permite obtener el queryset del formulario
  16.         # con este if selecciono el metodo por el cual me llega la info
  17.  
  18.         if self.request.method == 'GET':
  19.             filtros = {campo: CAMPOS[campo]['cast'].__call__('{}__{}'.format(self.request.GET.get('campo'), CAMPOS[campo]['lookup'] for campo in self.request.GET.get.keys() if campo in CAMPOS.keys() and self.request.GET.get(campo )!=''))}
  20.             qs = super().get_queryset()
  21.             logging.debug(qs)
  22.             logging.debug(filtros)
  23.             # logging.DEBUG(CAMPOS)
  24.             return qs
Add Comment
Please, Sign In to add comment