让我们想象一下以下简化的Django项目:
<root>/lib/python2.7/site-packages/externalapp/shop
<root>/myapp
Run Code Online (Sandbox Code Playgroud)
myapp还externalapp.shop.models通过添加几个字段来扩展模型.manage.py makemigrations确实生成了名为0004_auto_20150410_2001.py的模式迁移文件:
from __future__ import unicode_literals
from django.db import models, migrations
class Migration(migrations.Migration):
# __init__ is added by me as an attempt how to tell django's
# migration loader operations are for the different application
def __init__(self, name, app_label):
super(Migration, self).__init__(name, 'shop')
dependencies = [
('myapp', '__first__'),
('shop', '0003_auto_20150408_0958'),
]
operations = [
migrations.AddField(
model_name='product',
name='vat',
field=models.ForeignKey(to='myapp.VAT', null=True),
),
]
Run Code Online (Sandbox Code Playgroud)
如果<root>/lib/python2.7/site-packages/externalapp/shop/migrations/默认情况下将上述迁移模式放在路径中,manage.py migrate则会正确添加成功和表字段.
但是,如果我确实将上述迁移文件移动到myapp/migrations/,则以下manage.py …