GeoDjango с ошибками при использовании django.contrib.gis.measure.D

Прежде всего: Python 2.7.6, Django 1.6.5, Postgres 9.3.4, PostGIS 2.1.3, psycopg2 2.5.3 на RHEL 6.5

Вот соответствующая модель:

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

Этот запрос должен работатьв соответствии с документами:

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

Но это не так. Первый вызов отладки работает, но второй бросаетValueError:

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

Если я сделаю небольшое изменение, изменивD(km=5) в5:

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

Внезапно это работает. Вывод, который я получаю это:

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

Кто-нибудь знает, почему это не работает, как ожидалось? Возможно, это ошибка, или я делаю ошибку, которую просто не вижу?

[редактировать]
Я думаю, что это может быть ошибка Django. Я пошел вперед и открыл билетВот, Как только я выясню, что такое правильное решение, я добавлю ответ здесь.

Ответы на вопрос(1)

Ваш ответ на вопрос