Vic*_*mer 6 python django django-migrations
当我进行迁移时,python manage.py makemigrations wall
我在控制台中看到 Django (1.8.12) 告诉我一长串涉及的字段:
Migrations for 'wall':
0079_auto_20170302_0024.py:
- Add field periodic_task_interval to userproject
- Alter field bank_problems on bankireference
- Alter field bank_problems_category on bankireference
- Alter field bank_products on bankireference
- Alter field bank_products_category on bankireference
- Alter field extr_category on bankireference
- Alter field extr_words on bankireference
- Alter field neg_features on bankireference
- Alter field neutral_features on bankireference
- Alter field pos_features on bankireference
- Alter field tonality_category on bankireference
- Alter field tonality_words on bankireference
- Alter field bank_problems on fbpagepost
- Alter field bank_problems_category on fbpagepost
- Alter field bank_products on fbpagepost
- Alter field bank_products_category on fbpagepost
- Alter field extr_category on fbpagepost
Run Code Online (Sandbox Code Playgroud)
...... 广告等等,靠近ManyToManyField 的所有字段。我还检查其他迁移,貌似随机选择字段,因为我也看到了 tagulous.models.fields.TagField
,甚至
models.TextField。
但是,我确信没有改变那个字段,甚至触及它们
这是 0079_auto_20170302_0024.py 中未触及字段的内容:
......
migrations.AlterField(
model_name='userproject',
name='description',
field=models.TextField(default='', verbose_name='Description', blank=True, null=True),
),
......
Run Code Online (Sandbox Code Playgroud)
我所做的唯一一件事就是添加了- Add field periodic_task_interval to userproject其他字段 - 为什么它们出现在迁移中?由于数据库很大,这会影响长时间进行实际迁移吗?
如果您在字段中有选择=参数,您应该以“稳定的方式”生成它(每次都相同的顺序),例如使用sorted()
\n\nTYPES = {\n \'DISTRICT\': \'\xd0\x9e\xd0\xba\xd1\x80\xd1\x83\xd0\xb3\',\n \'AREA\': \'\xd0\xa0\xd0\xb0\xd0\xb9\xd0\xbe\xd0\xbd\',\n \'STATION\': \'\xd0\xa1\xd1\x82\xd0\xb0\xd0\xbd\xd1\x86\xd0\xb8\xd1\x8f \xd0\xbc\xd0\xb5\xd1\x82\xd1\x80\xd0\xbe\',\n}\ntype = models.CharField(\n max_length=255,\n choices=sorted(TYPES.items()),\n default=\'AREA\',\n)\nRun Code Online (Sandbox Code Playgroud)\n