Update database with new countries, regions and cities

def _update_geography(self, countries, regions, cities, city_country_mapping):
        """ Update database with new countries, regions and cities """
        existing = {
            'cities': list(City.objects.values_list('id', flat=True)),
            'regions': list(Region.objects.values('name', 'country__code')),
            'countries': Country.objects.values_list('code', flat=True)
        }
        for country_code in countries:
            if country_code not in existing['countries']:
                Country.objects.create(code=country_code, name=ISO_CODES.get(country_code, country_code))
        for entry in regions:
            if entry not in existing['regions']:
                Region.objects.create(name=entry['name'], country_id=entry['country__code'])
        for entry in cities:
            if int(entry['id']) not in existing['cities']:
                code = city_country_mapping.get(entry['id'])
                if code:
                    region = Region.objects.get(name=entry['region__name'], country__code=code)
                    City.objects.create(id=entry['id'], name=entry['name'], region=region,
                                    latitude=entry.get('latitude'), longitude=entry.get('longitude'))