首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django -架构迁移-如何添加字段

django -架构迁移-如何添加字段
EN

Stack Overflow用户
提问于 2015-06-23 18:47:52
回答 3查看 374关注 0票数 1

我有一个django 1.8应用程序,可以使用db。我试图使用内置迁移来更改表的架构。以下是我所做的步骤:

在我的开发环境中,我抓取了应用程序的源代码并运行

代码语言:javascript
复制
python manage.py sycdb

然后我跑了

代码语言:javascript
复制
python manage.py loaddata ~/my_data.json

然后我修改了modes.py。从没有数据的表'TABLE1‘中添加了一个字段并将其重命名为

然后

代码语言:javascript
复制
python manage.py makemigrations myapp
python manage.py migrate

错误: django.db.utils.OperationalError:表"myapp_someother_table“已经存在

然后跑

代码语言:javascript
复制
python manage.py migrate --fake-initial

起作用了!但是,当我浏览到TABLE1的管理页面时,我会得到以下错误:

OperationalError:没有这样的列: myapp_table1.my_new_field_id

我检查了数据库,是的,没有这样的栏。我怎么才能从这里开始呢?我更喜欢通过django来解决这个问题。如果我在db中直接修复它,那么迁移就不同步了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-24 11:23:22

迁移不会自动地看到您已经进行了更改。迁移通过将当前模型与保存在迁移文件中的历史模型进行比较来检测更改。

在这种情况下,您没有任何历史模型,因为您没有任何迁移。Django无法检测到模型中的任何更改,即使它们与数据库不同。

对您的模型进行更改的正确方法是首先对运行manage.py makemigration <my_app>,然后对您的模型进行更改,然后是另一个manage.py makemigrations

票数 1
EN

Stack Overflow用户

发布于 2015-06-23 20:46:34

您可能无法通过纯django 来保存数据。我没有使用south的个人经验,但有很多提到如果这个工具。以防万一别的对你没用..。

票数 0
EN

Stack Overflow用户

发布于 2015-06-23 22:25:42

这是我为使事情成功所做的事情,但必须有更好的方法,所以请添加更多的答案/评论.

  1. 我删除了sqlite和迁移文件夹。
  2. 我对model.py进行了所需的更改
  3. ran同步数据库
  4. 运行loaddata来加载我以前保存的json数据转储。
  5. 刚刚启动了dev服务器
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31011034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档