Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Python 重命名应用程序后进行迁移时出现Django错误_Python_Django - Fatal编程技术网

Python 重命名应用程序后进行迁移时出现Django错误

Python 重命名应用程序后进行迁移时出现Django错误,python,django,Python,Django,我在Django项目中工作,在体系结构中遇到了错误 我正在尝试在自己的软件包中设置模型。然而,我的应用程序不断给我错误 在我将模型移动到自己的包中并为每个类创建一个文件之前,一切都正常 现在,每当我尝试运行makemigrations,都会出现以下错误: ValueError: Unhandled pending operations for models: model.state (referred to by fields: testadmin.Member.state, testad

我在Django项目中工作,在体系结构中遇到了错误

我正在尝试在自己的软件包中设置模型。然而,我的应用程序不断给我错误

在我将模型移动到自己的包中并为每个类创建一个文件之前,一切都正常

现在,每当我尝试运行
makemigrations
,都会出现以下错误:

 ValueError: Unhandled pending operations for models:
  model.state (referred to by fields: testadmin.Member.state, testadmin.Organization.state)
我在migration命令中添加了models应用程序,它在某种程度上起了作用--
python./manage.py makemigrations models
。然而,现在我有了这个新的错误。出于某种原因,迁移无法识别
状态
模型

SystemCheckError: System check identified some issues: ERRORS:
models.Member.state: (fields.E300) Field defines a relation with model 'State', which is either not installed, or is abstract.
models.Organization.state: (fields.E300) Field defines a relation with model 'State', which is either not installed, or is abstract

您已重命名应用程序,但未重命名表

Django将模型的表名构造为
,以处理这些更改:

  • 表的重命名。你可以用它

    class Migration(migrations.Migration):
        # ...
        operations = [
            AlterModelTable('<old-app-name>_modelname', '<new-app-name>_modelname'),
            # ...
        ]
    
    def rename_migrations_forwards(apps, schema_editor):
        MigrationRecorder.Migration.objects.filter(app='<old-app-name>').update(app='<new-app-name>')
    
    def rename_migrations_reverse(apps, schema_editor):
        MigrationRecorder.Migration.objects.filter(app='<new-app-name>').update(app='<old-app-name>')
    
    class Migration(migrations.Migration):
        # ...
        operations = [
            # ...
            migrations.RunPython(
                rename_migrations_forwards,
                rename_migrations_reverse,
            ),
        ]
    

  • 如果在模型元中重写,则可以跳过表的重命名。但是,您不能跳过迁移的重命名。

    您重命名了应用程序,但没有重命名表

    Django将模型的表名构造为
    ,以处理这些更改:

  • 表的重命名。你可以用它

    class Migration(migrations.Migration):
        # ...
        operations = [
            AlterModelTable('<old-app-name>_modelname', '<new-app-name>_modelname'),
            # ...
        ]
    
    def rename_migrations_forwards(apps, schema_editor):
        MigrationRecorder.Migration.objects.filter(app='<old-app-name>').update(app='<new-app-name>')
    
    def rename_migrations_reverse(apps, schema_editor):
        MigrationRecorder.Migration.objects.filter(app='<new-app-name>').update(app='<old-app-name>')
    
    class Migration(migrations.Migration):
        # ...
        operations = [
            # ...
            migrations.RunPython(
                rename_migrations_forwards,
                rename_migrations_reverse,
            ),
        ]
    

  • 如果在模型元中重写,则可以跳过表的重命名。但是,您不能跳过迁移的重命名。

    您到底是如何移动模型(和迁移)的?您知道:Django创建的表的名称格式为“app_model”。如果您更改了应用程序名称,那么Django期望的表名称也会更改。顺便说一句:完整的回溯并不总是有用的,但是发布它也不会有什么坏处;)您能添加您的
    型号.py
    代码供我们查看吗?很可能是关系破裂导致了这个错误。@SoFLy我把所有的模型都放在自己的目录文件中,Django对命名和结构很讲究。如果您已将所有模型移动到模型目录中,则无法正常工作。模型需要存在于某个app/Models.py中,而不是其他任何地方。您是如何移动模型(以及迁移)的?您知道:Django创建的表的名称格式为“app_model”。如果您更改了应用程序名称,那么Django期望的表名称也会更改。顺便说一句:完整的回溯并不总是有用的,但是发布它也不会有什么坏处;)您能添加您的
    型号.py
    代码供我们查看吗?很可能是关系破裂导致了这个错误。@SoFLy我把所有的模型都放在自己的目录文件中,Django对命名和结构很讲究。如果您已将所有模型移动到模型目录中,则无法正常工作。模型需要存在于someapp/Models.py中,而不是其他任何地方。我使用元函数在代码中更改了数据库表名。这个问题与它认为国家已经被删除或其他什么有关。我不确定-数据库是否也跟踪迁移?它可以存储在那个里吗?@Jeremeylewallen:我不知道“状态”是什么,但是是的:迁移是在数据库中跟踪的(Django就是这样知道它们是否已经运行的)@Jeremeylewallen:那些
    字段定义了与模型的关系…
    错误是关于相关字段的(多对多)
    AlterModelTable
    将处理这些问题。我使用meta函数在代码中更改了我的数据库表名称。这个问题与它认为国家已经被删除或其他什么有关。我不确定-数据库是否也跟踪迁移?它可以存储在那个里吗?@Jeremeylewallen:我不知道“状态”是什么,但是是的:迁移是在数据库中跟踪的(Django就是这样知道它们是否已经运行的)@Jeremeylewallen:那些
    字段定义了与模型的关系…
    错误是关于相关字段的(多对多)
    AlterModelTable
    将处理这些问题