import geoip2 from django.db import models from django.contrib.gis.geoip2 import GeoIP2 class Signup(models.Model): email = models.EmailField() created_at = models.DateTimeField(auto_now_add = True) anonymized_ip = models.GenericIPAddressField() user_agent = models.CharField(max_length = 255) class Meta: constraints = [ models.UniqueConstraint(name = "unique_email", fields = ["email"]), ] def __str__(self): return self.email def _country(self): try: return GeoIP2().country(self.anonymized_ip) except geoip2.errors.AddressNotFoundError: return {} def country_name(self): return self._country().get("country_name", "??") def country_code(self): return self._country().get("country_code", "??")