Я использую общий вид на основе класса Django 1.3 для отображения списка изображений, но я хочу добавить фильтр, который позволяет пользователю сузить отображаемые результаты.
Мой текущий подход работает, но чувствует себя довольно хакерским:
class ImageFilterForm(ModelForm):
class Meta:
model = Image
class ImageListView(ListView):
model = Image
def get_queryset(self):
qs = Image.objects.select_related()
for item in self.request.GET:
key, value = item, self.request.GET.getlist(item)
# ... Filtering here ...
return qs
def get_context_data(self, **kwargs):
context = super(ImageListView, self).get_context_data(**kwargs)
context['filter_form'] = ImageFilterForm(self.request.GET)
return context
Есть ли лучшее средство для добавления настраиваемой фильтрации в общий вид?