which is much much faster and more efficient. Without annotation, we would have had to manually write the SQL or denormalize a bunch of ManyToMany fields, neither of which I was too excited about.
I have a suspicion that you might have been able to do it more efficiently (e.g., in one query) using extra() to provide a similar effect to the annotation. That's how I typically handled this sort of thing prior to aggregates landing.
I don't know how you Python guys, with your drive for readability and elegance which I admire, can tolerate so many underscores in your OOP code. This looks like C preprocessor to me.
It makes sense a lot, since you can't have comparison in the parameters (you'll pass a boolean instead of the comparison).
I totally understand you, but, I think its the best way to go, of course this is one example, and its very complicated, most of the time you'll only need one of those parameters.