I am trying to iterate over form **results** and I can't help but think that I am re-inventing the wheel here.

```
filterlist = []

if request.POST:
        form = FilterForm(request.POST)
        if form.is_valid():
            for key, value in form.cleaned_data.iteritems():
                filterlist.append(key)
                filterlist.append(value)

```

This works, but seems very awkward and creates lots of other problems. For example the values come back with u' so I have to use value.encode("utf8") but then if a value is None it throws in error. So now I have to check if it is None, if not then encode. There has to be a better way. 

EDIT: What I am trying to do.

I am trying to filter what is shown on a page. The problem I am running into is that if a value is empty (the user don't fill the box because they only want to filter against one object) then I get no results. For example a user wants to search for all books by the author name "Smith" but doesn't want to search against a genre.

```
results = Books.objects.filter(author=author, genre=genre) 

```

The user would get no results because this is an AND search. But, if a user put in "Smith" for the author and "mystery" for the genre then it works exactly like I want it to, only giving results where both are true. 

So, I am trying to eliminate the empty stuff by iterating over the form results. Like I said I am probably re-inventing the wheel here.