Обновленный ответ
Поскольку вы копируете данные, вам необходимо хранить их где-то для использования в моделях.Я бы предложил использовать базу данных.Вы можете создать модель с именем Country:
class Country(models.Model):
code = models.CharField(max_length=10)
name = models.CharField(max_length=20)
и использовать ее в своем скрипте следующим образом:
for row in table_rows:
td = row.find_all("td")[1]
name = td.find("a").get_text()
Country.objects.get_or_create(name=name, code=name)
Для использования модели в скрипте вы можете конвертировать ваш скрипт в пользовательская команда управления django :
# your_app/management/commands/generate_countries.py
from django.core.management.base import BaseCommand
from django.utils import timezone
from bs4 import BeautifulSoup
from urllib.request import urlopen
class Command(BaseCommand):
help = 'Generate Countries'
def handle(self, *args, **kwargs):
url = "..."
http_response = urlopen(url)
html = BeautifulSoup(http_response, "html.parser")
table = html.find("table", {"class":"table table-hover"})
table_rows = table.find("tbody").find_all("tr")
for row in table_rows:
td = row.find_all("td")[1]
name = td.find("a").get_text()
Country.objects.get_or_create(name=name, code=name)
, чтобы вы могли использовать ее следующим образом: python manage.py generate_countries
И использовать страну в других своих моделях, например так:
class Profile(models.Model):
...
countries = models.ForeignKey(Country, on_delete=models.DO_NOTHING)
Старый ответ
Допустим, ваш файл называется countries.py
, и в этом файле кортеж выглядит следующим образом:
COUNTRIES = (
("BR", "Brazil"),
("US", "The United States")
...
)
Теперь, скажем, его вта же папка, что и models.py
, тогда вы можете просто импортировать ее следующим образом:
from .countries import COUNTRIES
# if countries.py is in x module(folder with __init__.py file) then use
# from x.countires import COUNTRIES
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default="default.jpg", upload_to="profile_pics")
countries = models.CharField(max_length=100, choices=COUNTRIES, blank=False, null=True)