gpt4 book ai didi

python - 我应该编辑 django 迁移文件来编辑不匹配的依赖项吗

转载 作者:太空狗 更新时间:2023-10-30 01:06:28 25 4
gpt4 key购买 nike

我遇到了一个非常独特的问题。我创建了模型 1.'message',使用了一段时间,然后将其更改为 2. 'messages',然后再次将其更改回 3. 'message' 但这次在模型字段中有很多变化。

正如我后来了解到的,django 迁移在重命名模型时遇到了一些问题。在我的迁移中,出现了一些问题。尽管我以正确的方式运行了所有迁移,但在运行消息的第三次迁移时,我遇到了一些我手动修复的问题。现在,当我为其他模型的更改运行迁移时,我发现此迁移仍然依赖于消息的第二次迁移。但是,它依赖于第二次迁移的字段实际上是在第三次迁移中创建的。

我得到的回溯:

ValueError: Lookup failed for model referenced by field activities.Enquiry.message_fk: chat.Message

和:

  Applying contacts.0002_mailsend...Traceback (most recent call last):
File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/apps/config.py", line 163, in get_model
return self.models[model_name.lower()]
KeyError: 'message'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/db/migrations/state.py", line 84, in render
model = self.apps.get_model(lookup_model[0], lookup_model[1])
File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/apps/registry.py", line 202, in get_model
return self.get_app_config(app_label).get_model(model_name.lower())
File "/home/sp/webapps/myenv/lib/python3.4/site-packages/django/apps/config.py", line 166, in get_model
"App '%s' doesn't have a '%s' model." % (self.label, model_name))
LookupError: App 'chat' doesn't have a 'message' model.

我想问的是是否应该手动编辑migration文件中的依赖,将messages中的migration 2改为migration 3。

PS: 使用 django 1.7.2

最佳答案

通常,您不应手动编辑它们。

一旦你开始编辑它们,你就会陷入循环依赖问题,如果你不记得你做了什么改变,你的整个迁移就会一团糟。

如果您没有任何数据丢失,您可以做的是恢复迁移。如果要删除迁移,则应采取额外的预防措施,以确保在迁移表中不会留下任何指向不存在的迁移的条目。 (我建议不要手动删除迁移,因为它可能会变得复杂。)

只有分析了迁移文件,清楚是什么位置出了问题,才想到要编辑迁移文件,等自己能处理好再做。

在你的情况下,是的,问题可能是由于重命名而产生的,正如你所说,在运行迁移时你遇到了一些你手动修复的问题,它可能发生在进程被卡在两者之间并且它创建了一些问题。您可以更改依赖项并运行 makemigrations。如果存在循环依赖,它会直接出现,那么你应该恢复更改。或者,只需多做一点分析并通过编辑更多文件来消除循环依赖问题。 (保持备份)如果你很幸运或者你对迁移有深入的了解,你可能最终会成功。

关于python - 我应该编辑 django 迁移文件来编辑不匹配的依赖项吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37096806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com