我在数据库中有一个旧表。我想在Django应用程序中创建一个模型。在创建了一个模型之后,我使用migrate命令,然后它创建了一个具有自己名称的新表。
xpcnnkqh1#
Django提供了一个实用程序,可以通过inspectdb命令从现有数据库自动生成模型。您可以通过执行以下命令来内省现有数据库来创建模型
python manage.py inspectdb
上面的命令将输出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
输出文件将保存到当前目录。将该文件移动到正确的应用程序,您就有了进一步自定义的良好起点。您可以访问https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-inspectdb以获取更多信息。
qv7cva1a2#
您可以通过在模型的Meta类上设置db_table来指定表名。设置managed = False以阻止Django创建表。
Meta
db_table
managed = False
class ExistingModel(models.Model): ... class Meta: db_table = 'existing_table' managed = False
完成这些更改后,我将revert the previous migration,删除迁移文件,然后再次运行makemigrations。
makemigrations
2条答案
按热度按时间xpcnnkqh1#
Django提供了一个实用程序,可以通过inspectdb命令从现有数据库自动生成模型。
您可以通过执行以下命令来内省现有数据库来创建模型
上面的命令将输出Django可以从现有数据库创建的所有模型到stdout。您可以使用标准Unix输出重定向将其保存为文件
输出文件将保存到当前目录。将该文件移动到正确的应用程序,您就有了进一步自定义的良好起点。
您可以访问https://docs.djangoproject.com/en/4.1/ref/django-admin/#django-admin-inspectdb以获取更多信息。
qv7cva1a2#
您可以通过在模型的
Meta
类上设置db_table
来指定表名。设置managed = False
以阻止Django创建表。完成这些更改后,我将revert the previous migration,删除迁移文件,然后再次运行
makemigrations
。