Вы можете самостоятельно создавать страны с помощью пакета pycountry
.
Поскольку поле code
в создаваемой модели Country
имеет максимальную длину два символа, тогда вы захотите использовать код alpha_2
.
Я обычно использую настраиваемую команду управления для такого рода вещей. Может быть, добавьте проверку, чтобы увидеть, были ли какие-либо объекты уже созданы, затем обработайте их так, как вам хочется.
Использование из оболочки python manage.py create_countries
from address.models import Country
from pycountry import countries
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = 'Initialize Country model'
def handle(self, *args, **kwargs):
create_countries = [
Country(name=country.name[:40], code=country.alpha_2)
for country in countries
]
Country.objects.bulk_create(create_countries)
self.stdout.write(f'Created {len(countries)} countries.\n')
Если рабочий сервер не запустив Python / Django, вы можете использовать pycountry
для создания CSV-файла с соответствующими данными. Предполагая, что вы используете PostgreSQL, вы можете использовать команду COPY FROM
для заполнения базы данных.
import csv
from pycountry import countries
with open('countries.csv', mode='w') as countries_file:
# specify delimiter because some countries have a comma
writer = csv.writer(countries_file, delimiter='\t')
writer.writerow(['id', 'name', 'code'])
writer.writerows([
[index + 1, country.name, country.alpha_2]
for index, country in enumerate(countries)
])