Прежде всего, попробуйте ограничить вызовы базы данных.Количество стран относительно невелико, поэтому вы можете загрузить все страны одновременно и создать карту из кодов fips / iso для идентификаторов стран:
countries = {
(c.cc_fips, c.cc_iso): c.id
for c in Country.objects.all()
}
Затем создайте массовые города:
cities = []
for line in city_file.readlines():
fips, iso, name = line.split()
cities.append(
City(country_id=countries[(fips, iso)], name=name)
)
City.objects.bulk_create(cities)
Если количество городов очень велико, вы можете сохранять города кусками, например, каждые 100 городов, чтобы не хранить в памяти все объекты городов.