在 django 中为现有数据库表创建模型

Rus*_*bde 5 python django django-models

我的数据库中有一个旧表。我想在 Django 应用程序中创建一个模型。创建模型后,我使用 migrate 命令,然后它创建了一个具有自己名称的新表。

Put*_*M S 5

Django 提供了一个实用程序,可以通过检查数据库命令从现有数据库自动生成模型。

您可以通过执行以下命令内省现有数据库来创建模型

python manage.py inspectdb
Run Code Online (Sandbox Code Playgroud)

上面的命令会将 Django 可以从现有数据库创建的所有模型输出到 stdout。您可以使用标准 Unix 输出重定向将其保存为文件

python manage.py inspectdb > models.py # or pass the app_name.models.py if you want to generate them inside models.py file of specific app
Run Code Online (Sandbox Code Playgroud)

输出文件将保存到您的当前目录。将该文件移动到正确的应用程序,您就有了进一步自定义的良好起点。

您可以参考https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-inspectdb了解更多信息。


Ala*_*air 3

db_table您可以通过在模型的类上设置来指定表名称Meta。设置managed = False为阻止 Django 创建表。

class ExistingModel(models.Model):
    ...

    class Meta:
        db_table = 'existing_table'
        managed = False
Run Code Online (Sandbox Code Playgroud)

进行这些更改后,我将恢复之前的迁移,删除迁移文件,然后makemigrations再次运行。