id,summary,reporter,owner,description,type,status,component,version,severity,resolution,keywords,cc,stage,has_patch,needs_docs,needs_tests,needs_better_patch,easy,ui_ux 22830,GeoDjango dwithin errors when using django.contrib.gis.measure.D,django@…,nobody,"First off, I started a StackOverflow thread [http://stackoverflow.com/questions/24194710/geodjango-dwithin-error-argument-of-type-geoqueryset-is-not-iterable here] but haven't come up with an answer yet. I think there may be a bug in Django somewhere. Versions: Python 2.7.6, Django 1.6.5, Postgres 9.3.4, PostGIS 2.1.3, psycopg2 2.5.3 on RHEL 6.5 Here's the model I'm using: {{{ #!python 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 }}} This query should work [https://docs.djangoproject.com/en/1.6/ref/contrib/gis/geoquerysets/#std:fieldlookup-dwithin according to the docs]: {{{ #!python touching_locations = Location.objects.filter(geometry__dwithin=(location.geometry, D(km=5))) logging.debug(type(touching_locations)) logging.debug(len(touching_locations)) }}} But it doesn't. The first debug call works, but the second throws a `ValueError`: {{{ ValueError: Only numeric values of degree units are allowed on geographic DWithin queries. }}} If I make a small change by changing `D(km=5)` to `5`: {{{ #!python touching_locations = Location.objects.filter(geometry__dwithin=(location.geometry, 5)) logging.debug(type(touching_locations)) logging.debug(len(touching_locations)) }}} All of a sudden it works. The output I get is this: {{{ 54 }}} Is there a bug somewhere in Django? Am I misunderstanding how to use `D`? Are the Django docs incorrect? Is something else going on here? I appreciate any help I can get. Thanks!",Bug,closed,GIS,1.6,Normal,invalid,,,Unreviewed,0,0,0,0,0,0