Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
涉及重命名模型的Django迁移不工作_Django_Django Models_Django Migrations - Fatal编程技术网

涉及重命名模型的Django迁移不工作

涉及重命名模型的Django迁移不工作,django,django-models,django-migrations,Django,Django Models,Django Migrations,我已经成功地在Django 1.7中使用makemigrations和migrate来更改、添加和删除字段。不幸的是,在尝试重命名中间模型时,我无法使其工作。例如,我有两个模型A和B,通过模型X的多对多字段链接,我想将X重命名为Y 运行manage.py makemigrations不会检测到重命名,而是删除X并添加Y。但这不是问题所在。我将Django的自动生成脚本替换为: [ migrations.RenameModel(old_name='X',new_name='Y'), migra

我已经成功地在Django 1.7中使用makemigrations和migrate来更改、添加和删除字段。不幸的是,在尝试重命名中间模型时,我无法使其工作。例如,我有两个模型A和B,通过模型X的多对多字段链接,我想将X重命名为Y

运行manage.py makemigrations不会检测到重命名,而是删除X并添加Y。但这不是问题所在。我将Django的自动生成脚本替换为:

[ migrations.RenameModel(old_name='X',new_name='Y'),
  migrations.AlterField(
        model_name='Y',
        name='a',
        field=models.ForeignKey(related_name=b'Y', to='B'),
    )]
这给了我以下错误:

ValueError:字段b:X引用的模型的查找失败


因此,我猜它正在与包含旧模型名称的“直通”关系进行斗争。我尝试添加一个迁移命令来更改该关系,将其更新为中间模型的新名称,但这也没有帮助。

这是问题所在。谢谢你告诉我django甚至可以检测到重命名。正如票子上说的,显然检测到重命名/能够重命名是一种礼貌,而不是一个完整的功能。对。我认为他们所说的礼貌的意思是,如果模型的内容发生变化,它就不会起作用,这并不奇怪。但是,如果你所做的只是更改名称,那么它确实应该起作用。