Apenas um padrão simples a seguir para tornar as visualizações de pesquisa / filtragem mais fáceis de compreender, testar e manter. Adicione um gerenciador com um search
método que envolve toda a filtragem do queryset:
def search_view(request):
form = SearchForm(request.GET)
if form.is_valid():
object_list = MyModel.objects.search(form.cleaned_data)
else:
object_list = MyModel.objects.all()
Agora, a filtragem condicional e as consultas complexas são encapsuladas no gerenciador e podem ser testadas sem a visualização. Postagem completa no blog Wellfire Interactive .