The django.contrib.gis.geoip2
framework expose a high level geolocation api. I want to use it to look up the user timezone, but the queries do not return the timezone, although the maxmind documetion says that their databases include them. Am I missing something or how could this be done?
Asked
Active
Viewed 1,027 times
3
2 Answers
3
It would appear that time_zone
is a field on the geoip2.records.Location
class in the MaxMind GeoIP2 API.
On the Django wrapper, the response is defined here, and does not forward the time_zone
field along.
You could add a line to the wrapper that is simply:
'time_zone': response.location.time_zone,
I'm sure they would appreciate a pull request. :)

Matt Johnson-Pint
- 230,703
- 74
- 448
- 575
-
2looks like a [PR was committed and available in Django 2.0](https://github.com/django/django/pull/8373). So you call `.city(ip)['time_zone']`. – Tim Tisdall Mar 09 '18 at 16:40
1
The class below over-rides the GeoIP2
class to expose timezone info. Could be useful until / if it's added in the base class (will try to raise a PR for it soon if nobody gets to it first)
from django.contrib.gis.geoip2 import GeoIP2
class GeoipWithTimezone(GeoIP2):
def timezone(self, query):
enc_query = self._check_query(query, city=True)
return self._city.city(enc_query).location.time_zone

gar
- 14,152
- 5
- 30
- 31