def render(self, name, value, *args, **kwargs): # value is either None, a string/unicode value, or a GEOSGeometry if value is None: # no value lat, lng = DEFAULT_LAT, DEFAULT_LNG else: try: if isinstance(value, basestring): # value is unicode/string value = GEOSGeometry(value) lat, lng = value.y, value.x elif isinstance(value, dict): lat, lng = value.get('lat'), value.get('lng') #lat, lng = value.get('%s_lat' % name), value.get('%s_lng' % name) else: # value is GEOSGeometry lat, lng = value.y, value.x except: lat, lng = value, value # renders text form elements (for debugging): html = self.inner_widget.render( 'lat', lat, dict( id='id_lat', style='width:100px;')) html += self.inner_widget.render('lng', lng, dict(id='id_lng', style='width:100px;')) return mark_safe(html)