I know this was a while back but I think I've figured out the best solution to this question that doesn't involve actually evaluating the query (which can be expensive) like the OP suggested.
qs = MyModel.objects .... rest of query
field_names = list(qs.query.values_select) + list(qs.query.annotation_select)