Django :лучший способ добавить фильтрацию (и сортировку )в (универсальный )ListView на основе класса?

Допустим, у меня есть такая модель:

class Car(models.Model):
    BRANDS = (
        ('FRD', 'Ford'),
        ('MCD', 'Mercedes'),
       ...
    )
    brand = models.CharField(max_length=3, choices=BRANDS)
    color = models.CharField(max_length=24)
    url = models.URLField()
    new = models.BooleanField(default=False)

И хотел бы создать представление списка, используя общие представления на основе классов :

. В urls.py

url(r'^car/list/$', CarList.as_view(), name='car_list'),

В views.py

class CarList(ListView):
    model = Car
    template_name = "list.html"
    def get_queryset(self):
        return Car.objects.all()

В list.html

{% for car in cars %}
    <tr>
        <td>{{ car.brand }}</td>
        <td>{{ car.color }}</td>
        <td>{{ car.url }}</td>
        <td>{{ car.new }}</td>
    </tr>

Теперь я хотел бы предложить несколько вариантов добавления фильтров по набору запросов (и вариантов сортировки по столбцам ). Например, обычное окно поиска, которое делает %LIKE% для любого столбца, или выбор из выбора бренда -, или простое возрастание/убыль для каждого столбца.

Я знаю, что фильтры и сортировка окажутся в наборе запросов (get_queryset). но это требует много конкретной работы в шаблоне и коде просмотра, хотя я чувствую, что должны быть какие-то пакеты, которые помогают в этом?

У кого-нибудь есть указания для меня?

6
задан Ghopper21 6 August 2012 в 04:48
поделиться