makemigrations无法识别数据库更改

时间:2015-12-22 07:56:44

标签: python django django-models django-migrations

我正在使用django,现在我将一个python文件从custom_fields重命名为fields并更改了一个Model类,而Model类正在使用一个来自{的字段{1}}文件,但是当我运行

fields

存在这样的错误:

python manage.py makemigrations

我不知道如何解决这个错误,所以我尝试删除Traceback (most recent call last): File "manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/__init__.py", line 350, in execute_from_command_line utility.execute() File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/__init__.py", line 342, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/base.py", line 348, in run_from_argv self.execute(*args, **cmd_options) File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/base.py", line 399, in execute output = self.handle(*args, **options) File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/core/management/commands/makemigrations.py", line 65, in handle loader = MigrationLoader(None, ignore_no_migrations=True) File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 49, in __init__ self.build_graph() File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 170, in build_graph self.load_disk() File "/Users/smy/wuque/projects/LinuxChat/Server/lib/python2.7/site-packages/django/db/migrations/loader.py", line 105, in load_disk migration_module = import_module("%s.%s" % (module_name, migration_name)) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/Users/smy/wuque/projects/LinuxChat/Server/LinuxChatServer/Server/migrations/0005_auto_20151215_1223.py", line 5, in <module> import Server.custom_fields ImportError: No module named custom_fields 文件夹,但是当我再次运行上面的命令时,无法检测到任何更改,即使我再次修改Model类。只是显示:

migrates

现在我无法修改数据库表,任何人都可以告诉我如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:2)

完成

makemigrations以应用将直接影响数据库底层结构的更改。

重命名python文件对数据库没有任何影响,因为字段的 type 没有改变,因此它不会对数据库产生任何影响。你最终看到的是你的python文件中的一个不同的导入。

答案 1 :(得分:1)

如果您是第一次迁移该应用,则必须使用:

manage.py makemigrations myappname

一旦你这样做,你可以这样做:

manage.py migrate

在项目文件夹中运行makemigrations意味着它将查找更新与项目的settings.py中包含的所有应用程序相关的所有表。一旦你包含它,makemigrations将自动包含应用程序(这节省了大量的工作,因此你不必为你的项目/网站中的每个应用程序运行makemigrations app_name。)

如果您对这些步骤中的任何一个感到困惑,请阅读迁移文件。更改它们以更正您的架构或删除不需要的文件,但不要忘记更改下一个迁移文件的依赖项部分。