'Returns the area of the geographic field in an `area` attribute on
each element of this GeoQuerySet.'

def area(self, tolerance=0.05, **kwargs):

    (procedure_args, geo_field) = self._spatial_setup('area', field_name=kwargs.get('field_name', None))
    s = {'procedure_args': procedure_args, 'geo_field': geo_field, 'setup': False}
    connection = connections[self.db]
    backend = connection.ops
    if backend.oracle:
        s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'
        s['procedure_args']['tolerance'] = tolerance
        s['select_field'] = AreaField('sq_m')
    elif (backend.postgis or backend.spatialite):
        if backend.geography:
            s['select_field'] = AreaField('sq_m')
        elif (not geo_field.geodetic(connection)):
            s['select_field'] = AreaField(Area.unit_attname(geo_field.units_name(connection)))
        else:
            raise Exception('Area    on    geodetic    coordinate    systems    not    supported.')
    return self._spatial_attribute('area', s, **kwargs)
