所以我的django项目运行得非常好,一切都正常
我想将一个应用程序重命名为其他名称,所以我这样做并更新了中的所有相关文件,包括app.py配置文件
我还清除了数据库并从每个应用程序中删除了所有迁移文件
从那以后,我一直无法完成应用程序的makemigration
我甚至重新创建了我重新命名的应用程序,方法是执行django admin startapp“appname”,然后复制models.py admin.py等的内容,看看我是否造成了内部问题,但我就是搞不清楚到底发生了什么
我从另一个apps admin.py文件中删除了这个文件(如下),成功地完成了所有应用程序的makemigrations,包括我重新制作的应用程序
# accounts/admin.py
class SigBotSettingsInLine(admin.StackedInline):
model = SigBotSettings
@admin.register(Bot)
class BotAdmin(admin.ModelAdmin,):
...
inlines = [SigBotSettingsInLine]
但最终python manage.py迁移仍然失败。如果有人愿意帮忙,我们将不胜感激
以下是错误代码:
(dguacENV) PS C:\Users\Admin\Desktop\djangoProjects\dguac> python manage.py makemigrations accounts
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
utility.execute()
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\core\management\__init__.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\core\management\base.py", line 398, in execute
output = self.handle(*args, **options)
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\core\management\base.py", line 89, in wrapped
res = handle_func(*args, **kwargs)
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\core\management\commands\makemigrations.py", line 88, in handle
loader = MigrationLoader(None, ignore_no_migrations=True)
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\db\migrations\loader.py", line 53, in __init__
self.build_graph()
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\db\migrations\loader.py", line 286, in build_graph
self.graph.ensure_not_cyclic()
File "C:\Users\Admin\anaconda3\envs\dguacENV\lib\site-packages\django\db\migrations\graph.py", line 274, in ensure_not_cyclic
raise CircularDependencyError(", ".join("%s.%s" % n for n in cycle))
django.db.migrations.exceptions.CircularDependencyError: accounts.0001_initial, accounts.0002_auto_20210809_1814, signals.0001_initial
帐户/迁移/0001_initial.py中的依赖项
dependencies = [
('signals', '__first__'),
('auth', '0012_alter_user_first_name_max_length'),
]
帐户/迁移/0002_auto_20210809_1910.py中的依赖项
dependencies = [
('accounts', '0001_initial'),
]
信号/迁移/0001_initial.py中的依赖关系
dependencies = [
('accounts', '0002_auto_20210809_1910'),
]
已解决:
是的,非常感谢您指出迁移依赖性问题,阅读该链接使我清楚地了解了makemigrations函数的工作原理
因此,在我查看了依赖项之后,我发现在Signals.models文件中有一个foriegnkey,它在迁移之前链接到Signals应用程序
我注释掉了这条外键线,然后迁移了,一切都很好
我甚至在之后添加了foreignkey并更新了迁移,这也起到了作用,因为此时信号数据库已经迁移了
我知道这是一个坏习惯,但他会改变的方式,外键是通过另一种方法连接
谢谢你的帮助
这告诉我们:
accounts.0001.initial
依赖于signals.0001_initial
(由'__first__'
指定)accounts.0002_auto_20210809_1910
依赖于accounts.0001.initial
signals.0001_initial.py
依赖于accounts.0002_auto_20210809_1910
圆形应该是清晰的
您可以手动编辑这些依赖项,也可以删除所有迁移并使用
./manage.py makemigrations
再次生成它们。这应该可以解决问题,除非模型依赖项本身存在潜在问题警告
编辑或删除迁移时要非常小心。如果您的项目已部署到live server,那么编辑已应用的迁移充其量将一事无成,充其量将完全破坏您的生产数据库。仅当您正在处理尚未部署的项目时,才应使用继续建议
相关问题 更多 >
编程相关推荐