Django 2:使用另一个应用程序中不存在的数据进行迁移

时间:2018-04-10 16:40:33

标签: django django-models django-migrations

我正在尝试创建一个新表,并使用当前不存在于另一个表中的初始值加载它。我发现的所有迁移信息都是从现有模型中提取到新模型中。我想在新模型中添加新信息。例如:

如果我想要一个“国家模式”和一个带有国外外键的“国家模式”,我如何与该国家/地区的所有州建立“国家(美国)”?

然后,如果我稍后创建“国家(加拿大)”,其中包含与“US”相同的文件中的所有地区,它是否只会添加“加拿大”,还是会复制所有“美国”信息。

抱歉格式不好。我目前正在我的iPhone上打字并且没有弄清楚格式化。

1 个答案:

答案 0 :(得分:1)

您可以编写管理命令并通过manage.py调用初始化数据库吗?像

这样的东西
from django.core.management.base import BaseCommand, CommandError
from .models.places import State, City

states = [
    ['Alabama','AL'],
    ['Alaska','AK'], ...
]

cities = [
    ['New York', 'New York'],
    ['Los Angeles', 'California'],
    ['Chicago','Illinois'], ...
]

class Command(BaseCommand):
    help = 'Populates the database with startup data'

    def handle(self, *args, **options):
        for s in states:
            state, created = State.objects.get_or_create(state=s[0],state_code=s[1])
            state.save()
            self.stdout.write(self.style.SUCCESS('State "%s" created' % (state)))

        for c in cities:
            state = State.objects.get(state=c[1])
            city, created = City.objects.get_or_create(city=c[0],state=state)
            city.save()
            self.stdout.write(self.style.SUCCESS('City "%s" created' % (city)))