title: How to add distance from point as an annotation in GeoDjango
body: <p>I have a Geographic Model with a single PointField, I'm looking to add an annotation for the distance of each model from a given point, which I can later filter on and do additional jiggery pokery.</p>
  
  <p>There's the obvious <code>queryset.distance(to_point)</code> function, but this doesn't actually annotate the queryset, it just adds a distance attribute to each model in the queryset, meaning I can't then apply <code>.filter(distance__lte=some_distance)</code> to it later on.</p>
  
  <p>I'm also aware of filtering by the field and distance itself like so:</p>
  
  <pre><code>queryset.filter(point__distance_lte=(to_point, D(mi=radius)))
  </code></pre>
  
  <p>but since I will want to do multiple filters (to get counts of models within different distance ranges), I don't really want to make the DB calculate the distance from the given point every time, since that could be expensive.</p>
  
  <p>Any ideas? Specifically, is there a way to add this as a regular annotation rather than an inserted attribute of each model?</p>