我对我的model.py文件进行了一些更改...我添加了另一个字段(fds_name):
from django.db import models
class funds(models.Model):
fds_symbol = models.CharField(max_length=5)
fds_name = models.CharField(max_length=128)
我运行了南架构迁移命令,它检测到了更改并进行了迁移:
/var/www/finance/finance-env/bin/python3 manage.py schemamigration corefinance --auto
tail corefinance/migrations/0002_auto__add_funds.py
models = {
'corefinance.funds': {
'Meta': {'object_name': 'funds'},
'fds_name': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
'fds_symbol': ('django.db.models.fields.CharField', [], {'max_length': '5'}),
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'})
}
}
complete_apps = ['corefinance']
但是,当我运行迁移时,它表示没有任何迁移,我可以看到数据库仍然缺少新字段。
/var/www/finance/finance-env/bin/python3 manage.py migrate corefinance
Running migrations for corefinance:
- Nothing to migrate.
- Loading initial data for corefinance.
Installed 0 object(s) from 0 fixture(s)
答案 0 :(得分:1)
这可能是因为在--initial
迁移和下一个模式迁移之间,您必须将实际迁移持久保存到发出命令python manage.py migrate corefinance
的数据库。
完成第一次迁移之后,您可以添加另一个字段,执行和schemamigration --auto
并通过执行python manage.py migrate corefinance
再次将其提交到数据库
答案 1 :(得分:1)
这个解决方案比dhana的答案更有吸引力,但它确实有效。您可以通过数据库管理界面手动更改数据库架构,然后运行a fake migration。通过这样做,Django将认为已经应用了模式迁移,并且已经进行了所有必要的数据库更改。