我是Django的初学者。我最近一直在做一个有几个不同页面的网站。我在urls.py中引用了其他应用的几个视图。我使用的一个应用程序用于输入并进行一些计算,因此它定义了一些表单。这一切都很好,我能够导入视图很好,但我改变了我的一个表单字段名。这导致了一些问题,因为我将这些值存储在数据库中。这对我来说是有意义的,因为我已经用以前的命名约定保存了一些数据,现在我改变了它。因此,我认为删除数据库和迁移将允许我重新开始,并使用更新后的字段创建一个新数据库。我搞砸了,因为我读到我不应该删除我的init。py文件在我的迁移文件夹
我已经尝试用makemigrations&migrate重新做我的迁移,但是我一直得到一个错误,说没有做任何更改,也没有新的迁移显示在我的文件夹中。现在,当我查看我的url .py文件时,导入的视图和应用程序显示为红色下划线,并显示"import package"
我也试过还原我的代码,并能够得到迁移文件回来,但同样的错误显示在我的urls.py文件。
我已经尝试了我能在网上找到的所有应用程序,但现在我想我可能只需要重新创建这些应用程序。
任何帮助都是感激的!
首先,要重命名表单字段,只需在模型中更改它,然后进行并应用迁移。Django应该检测现有字段的重命名并创建migrations.AlterField(...)
语句(你可以检查已经创建的迁移文件,如果它们还没有被应用/迁移,可以自由地删除它们)。
首先,请检查将名为__init__.py
的空文件添加到迁移文件夹中是否解决了问题。这是python的要求,让解释器知道文件夹包含python模块。此外,如果您已经从某处下载了项目,则需要有现有的迁移。删除它们并重新创建它们可能会失败。
之后试着运行
python manage.py makemigrations
python manage.py migrate
如果仍然没有更改,通过查看django_migrations表或运行以下命令检查是否有迁移应用到数据库:
python manage.py showmigrations
如果这没有帮助,试着从一个干净的项目开始:
- 备份你所有的代码更改并恢复到起点,
__init__.py
文件应该回来,你也应该删除数据库(db.sqlite3) - 运行迁移命令
- 添加所有代码更改
- 检查您的代码更改是否有新的迁移文件,它们可能会导致问题。如果你还没有手动创建或修改它们,你可以删除它们,然后让Django重新创建它们