데이브 :
나는 최근에 django_address 모듈을 설치 장고 2.0, 파이썬 3.7와 MySQL 5를 사용하고 있습니다. 내 models.py 파일을 기반으로 내 초기 마이그레이션을 실행했을 때 나는 눈치 ...
from django.db import models
from address.models import AddressField
from phonenumber_field.modelfields import PhoneNumberField
class CoopType(models.Model):
name = models.CharField(max_length=200, null=False)
class Meta:
unique_together = ("name",)
class Coop(models.Model):
type = models.ForeignKey(CoopType, on_delete=None)
address = AddressField(on_delete=models.CASCADE)
enabled = models.BooleanField(default=True, null=False)
phone = PhoneNumberField(null=True)
email = models.EmailField(null=True)
web_site = models.TextField()
그것은 포함한 일부 주소 테이블을 생성 ...
mysql> show create table address_country;
+-----------------+---------------------------------------------------+
| Table | Create Table |
+-----------------+---------------------------------------------------+
| address_country | CREATE TABLE `address_country` ( |
| | `id` int(11) NOT NULL AUTO_INCREMENT, |
| | `name` varchar(40) COLLATE utf8_bin NOT NULL, |
| | `code` varchar(2) COLLATE utf8_bin NOT NULL, |
| | PRIMARY KEY (`id`), |
| | UNIQUE KEY `name` (`name`) |
| | ) ENGINE=InnoDB |
| | DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
+-----------------+---------------------------------------------------+
그러나,이 표는 그 안에 데이터가 없습니다. 모듈에 의해 생성 된 테이블의 씨앗 데이터를 얻거나 할 내 자신에 그것을 발굴해야 할 수있는 방법이 있습니까?
solarissmoke :
난 당신이 간단한 관리 명령을 쓰기 좋을 것 그 수입 데이터 pycountry 주소 모델로 (에서 차용 접근 여기 ). pycountry은 국가의 ISO 표준 목록의 래퍼이다 - 즉, 당신이받을거야으로 국가의 정규 목록으로에 관하여이다.
관리 명령은 당신에 모든 국가 채울 Country
같이 보일 것입니다 모델 :
import pycountry
from django.core.management.base import BaseCommand, CommandError
from address.models import Country
class Command(BaseCommand):
help = "Populates address.Country with data from pycountry."
def handle(self, *args, **options):
countries = [
Country(
code=country.alpha_2,
name=country.name[:40], # NOTE - concat to 40 chars because of limit on the model field
)
for country in pycountry.countries
]
Country.objects.bulk_create(countries)
self.stdout.write("Successfully added %s countries." % len(countries))
이것은 국가의 ISO리스트 모델을 채 웁니다.
여기서 한 가지주의는 점이다 address.Country.name
자릅니다 위의 스크립트, 그래서 - 필드 (ISO 2 문자 코드가 확실히 고유 국가 코드 고유하게하지 않는 결정과 함께, 나에게 의심 디자인 결정처럼 보인다) 40 자로 제한됩니다 에 맞게 이름을 지정합니다. 이 당신을 위해 문제가 될 경우 당신이 차용, 자신의 주소 모델을 설정 제안 django-address
및 문자 제한을 제기.