code: def countries(self):
          
          if not hasattr(self, "_countries"):
              only = self.get_option("only")
              if only:
                  only_choices = True
                  if not isinstance(only, dict):
                      for item in only:
                          if isinstance(item, six.string_types):
                              only_choices = False
                              break
              if only and only_choices:
                  self._countries = dict(only)
              else:
                  # Local import so that countries aren't loaded into memory
                  # until first used.
                  from django_countries.data import COUNTRIES
  
                  self._countries = dict(COUNTRIES)
                  if self.get_option("common_names"):
                      self._countries.update(self.COMMON_NAMES)
                  override = self.get_option("override")
                  if override:
                      self._countries.update(override)
                      self._countries = dict(
                          (code, name)
                          for code, name in self._countries.items()
                          if name is not None
                      )
              if only and not only_choices:
                  countries = {}
                  for item in only:
                      if isinstance(item, six.string_types):
                          countries[item] = self._countries[item]
                      else:
                          key, value = item
                          countries[key] = value
                  self._countries = countries
              self.countries_first = []
              first = self.get_option("first") or []
              for code in first:
                  code = self.alpha2(code)
                  if code in self._countries:
                      self.countries_first.append(code)
          return self._countries
docs: Return the a dictionary of countries, modified by any overriding
          options.
  
          The result is cached so future lookups are less work intensive.