this is my view:
class IndexPedimentoView(LoginRequiredMixin, FilterView):
template_name = 'pedimento/index.html'
model = VPedGuardado
paginate_by = 20
context_object_name = 'pedimentos'
filterset_class = PedimentosFilter
and this is my filter.py:
import django_filters
from validador_modular.models import VInicioPedim, VEstado, VPedGuardado, VTipoOperacion
pedimentos_fields = {
'aduana_de_despacho': {'label': 'Aduana:', 'placeholder': 'Aduana de Despacho'},
'patente_autorizacion': {'label': 'Autorización:', 'placeholder': 'Patente Autorización'},
'numero_pedimento': {'label': 'Pedimento:', 'placeholder': 'Pedimento'},
'pedimento_guardado__dato_general__tipo_operacion': {'label': 'Tipo de Operación:', 'placeholder': 'Tipo de Operación'},
'pedimento_guardado__estado': {'label': 'Estado', 'placeholder': 'Estado'},
'mes': {'label': 'Mes', 'placeholder': 0},
'ano': {'label': 'Año', 'placeholder': 0},
}
class PedimentosFilter(django_filters.FilterSet):
mes = django_filters.NumberFilter(field_name='created_at', lookup_expr='month')
ano = django_filters.NumberFilter(field_name='created_at', lookup_expr='year')
# tipo_operacion = django_filters.ModelChoiceFilter(queryset = VTipoOperacion.objects.all())
# estado = django_filters.ModelChoiceFilter(queryset = VEstado.objects.all())
class Meta:
model = VInicioPedim
fields = list(pedimentos_fields.keys())
def __init__(self, *args, **kwargs):
super(PedimentosFilter, self).__init__(*args, **kwargs)
for field_name in self.get_fields():
self.filters[field_name].label = pedimentos_fields[field_name]['label']
self.filters[field_name].field.widget.attrs.update({
'class': 'form-control', 'placeholder': pedimentos_fields[field_name]['placeholder']
})
# If it's an input field, change it so that it uses contains
if self.filters[field_name].__class__.__name__ == 'CharFilter':
self.filters[field_name].lookup_expr = 'icontains'