code: def ip(self):
          
          r = ''
  
          # this was compiled from here:
          # https://github.com/un33k/django-ipware
          # http://www.ietf.org/rfc/rfc3330.txt (IPv4)
          # http://www.ietf.org/rfc/rfc5156.txt (IPv6)
          # https://en.wikipedia.org/wiki/Reserved_IP_addresses
          format_regex = re.compile(r'\s')
          ip_regex = re.compile(r'^(?:{})'.format(r'|'.join([
              r'0\.', # reserved for 'self-identification'
              r'10\.', # class A
              r'169\.254', # link local block
              r'172\.(?:1[6-9]|2[0-9]|3[0-1])\.', # class B
              r'192\.0\.2\.', # documentation/examples
              r'192\.168', # class C
              r'255\.{3}', # broadcast address
              r'2001\:db8', # documentation/examples
              r'fc00\:', # private
              r'fe80\:', # link local unicast
              r'ff00\:', # multicast
              r'127\.', # localhost
              r'\:\:1' # localhost
          ])))
  
          ips = self.ips
          for ip in ips:
              if not format_regex.search(ip) and not ip_regex.match(ip):
                  r = ip
                  break
  
          return r
docs: return the public ip address