GeoDjango dwithin errores al usar django.contrib.gis.measure.D

Primero apagado: Python 2.7.6, Django 1.6.5, Postgres 9.3.4, PostGIS 2.1.3, psycopg2 2.5.3 en RHEL 6.5

Aquí está el modelo relevante:

class Location(models.Model):
    name = models.CharField(max_length=255)
    geometry = models.MultiPolygonField(blank=True, default=None, null=True)
    objects = models.GeoManager()  # override the default manager with a GeoManager instance
    parent = models.ForeignKey('self', blank=True, default=None, null=True)

    def __unicode__(self):
        return self.name

Esta consulta debería funcionarde acuerdo con los documentos:

touching_locations = Location.objects.filter(geometry__dwithin=(location.geometry, D(km=5)))
logging.debug(type(touching_locations))
logging.debug(len(touching_locations))

Pero no lo hace. La primera llamada de depuración funciona, pero la segunda arroja unValueError:

<class 'django.contrib.gis.db.models.query.GeoQuerySet'>
ValueError: Only numeric values of degree units are allowed on geographic DWithin queries.

Si hago un pequeño cambio cambiandoD(km=5) a5:

touching_locations = Location.objects.filter(geometry__dwithin=(location.geometry, 5))
logging.debug(type(touching_locations))
logging.debug(len(touching_locations))

De repente funciona. El resultado que obtengo es este:

<class 'django.contrib.gis.db.models.query.GeoQuerySet'>
54

¿Alguien sabe por qué esto no funciona como se esperaba? ¿Es esto quizás un error, o estoy cometiendo un error que simplemente no veo?

[editar]
Creo que esto puede ser un error de Django. Seguí adelante y abrí un boletoaquí. Una vez que descubra cuál es la solución adecuada, agregaré la respuesta aquí.

Respuestas a la pregunta(1)

Su respuesta a la pregunta