The option of idexact should be kept, but I can't conceive of any other meaning for polls.get_object(id=5) than id__exact=5. Beautiful is better than ugly. Simple is better than complex. Readability counts. I'll see your Zen and raise you two more. :-)

Isn't it the cutest patch you've ever seen? It followed me home, Mom, can I please apply it to the repository? :-)

On a serious note: this will only work for lookups that are one "level" of complexity deep, e.g. get_object(id=5). I thought about the possibility of doing choices.get_list(polls__sites__id=5) instead of choices.get_list(polls__sites__id__exact=5) and realized no, that wouldn't be a good idea. If you're writing out a relation of this much complexity, it's better to be explicit about the fact that you're doing an exact match. But in the vast majority of cases where you'd want to use the shorthand, you're doing something like get_object(id=5).

Again, it would be possible to do this at deeper levels, but I think the risk of ambiguity isn't worth the effort saved. Besides, if you're going through one table to get to the next table, you probably don't have an id into the second table anyway.