1 表删除
# 先到数据库把表删掉:drop table
drop table
# 2.注释Django中对应的Model
# 3.注释Django中对应app/migrations/0001_initial.py 文件中的operations中的migrations.CreateModel 部分
# 4.执行以下命令
python manage.py makemigrations
python manage.py migrate --fake
2 表重建
1.去掉Django中对应的models.py中的注释
2.去掉Django中对应app/migrations/0001_initial.py 文件中的operations中的migrations.CreateModel 部分注释
3.执行以下命令:
python manage.py makemigrations
python manage.py migrate
3 表新建
1.Django中对应的models.py中编写
class Tests(models.Model):
title = models.CharField(max_length=32)
price = models.DecimalField(max_digits=5, decimal_places=2)
author = models.CharField(max_length=32)
publish = models.CharField(max_length=32)
class Meta:
db_table = 'cate' # 自定义表名
2.执行以下命令:
python manage.py makemigrations
python manage.py migrate
4 表同步(数据库已有数据表同步到django中使用)
该场景可以使用已有数据表,或对已有数据表不在创建,直接使用。
1.查看数据库已有数据信息
python manage.py inspectdb
2.将已有数据表对应的Model信息截取
class AppDrfBooksTests(models.Model):
id = models.BigAutoField(primary_key=True)
title = models.CharField(max_length=32)
price = models.DecimalField(max_digits=5, decimal_places=2)
author = models.CharField(max_length=32)
publish = models.CharField(max_length=32)
class Meta:
managed = False # 关键参数
db_table = 'app_drf_books_tests'
# Meta 参数
managed = False
默认为True,意思是Django在migrate命令中创建合适的数据表,并且会在 flush 管理命令中移除它们。
模型含有指向其他未被管理模型的ManyToManyField,那么多对多连接的中介表也不会被创建。
db_table = 'app_drf_books_tests'
指定表名
3.将类信息放至Modle文件中models.py
4.执行以下命令:
python manage.py makemigrations
python manage.py migrate
5 migrations 文件重置管理
python manage.py migrate 库表未更新时,使用以下方法重新更新库表。
# django 的 migrations 文件重置管理
python manage.py migrate --fake <app> zero
# 如
python manage.py migrate --fake app_drf_books zero
注:python manage.py migrate –-fake-inital 这个命令是对所有 app 操作
文章详细介绍了在Django框架下如何管理数据库表,包括删除表、重建表、新建表以及如何同步已有数据表到Django模型中,涉及的关键步骤包括修改模型、执行makemigrations和migrate命令,并强调了managed和db_table属性在处理已有数据表时的重要性。

被折叠的 条评论
为什么被折叠?



