GeoDjango dwithin Fehler bei der Verwendung von django.contrib.gis.measure.D

Zunächst einmal: Python 2.7.6, Django 1.6.5, Postgres 9.3.4, PostGIS 2.1.3, Psycopg2 2.5.3 auf RHEL 6.5

Hier ist das relevante Modell:

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

Diese Abfrage sollte funktionierenlaut den docs:

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

Aber das tut es nicht. Der erste Debug-Aufruf funktioniert, der zweite löst einen ausValueError:

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

Wenn ich eine kleine Änderung durch Ändern vornehmeD(km=5) zu5:

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

Plötzlich klappt es. Die Ausgabe, die ich erhalte, ist die folgende:

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

Weiß jemand, warum dies nicht wie erwartet funktioniert? Ist das vielleicht ein Fehler oder mache ich einen Fehler, den ich einfach nicht sehe?

[bearbeiten]
Ich denke, das könnte ein Django-Bug sein. Ich ging voran und öffnete eine KarteHier. Sobald ich herausgefunden habe, was die richtige Lösung ist, werde ich die Antwort hier hinzufügen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage