I've actually built a small app that generates a form allowing users to do a Meta Query on models django-modelqueryform.
I am in the process of a full rewrite of it to make it a lot more customizable, but the initial version works with fields that have choices set or with fields that are a numeric type. The resulting form provides each of the fields in you models with either a multichoicefield (choices) or a multifield widget which has a min, max and allow None checkbox. Right now I do not handle text based fields.
You can find the code and documentation (as it is) at
https://github.com/ckirby/django-modelqueryformEven if you can't use this directly, I think the code can give you some ideas.
Hope it helps!