Django
filtro django
Buscar..
Utilice django-filter con CBV
django-filter
es un sistema genérico para filtrar Django QuerySets según las selecciones de los usuarios. La documentación lo utiliza en una vista basada en funciones como modelo de producto:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField()
description = models.TextField()
release_date = models.DateField()
manufacturer = models.ForeignKey(Manufacturer)
El filtro será el siguiente:
import django_filters
class ProductFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='iexact')
class Meta:
model = Product
fields = ['price', 'release_date']
Para usar esto en un CBV, anule get_queryset()
de ListView, luego devuelva el conjunto de querset
filtrado:
from django.views.generic import ListView
from .filters import ProductFilter
class ArticleListView(ListView):
model = Product
def get_queryset(self):
qs = self.model.objects.all()
product_filtered_list = ProductFilter(self.request.GET, queryset=qs)
return product_filtered_list.qs
Es posible acceder a los objetos filtrados en sus vistas, como con la paginación, en f.qs
Esto paginará la lista de objetos filtrados.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow