我想知道是否有人可以给出当我们想要从 Django 中删除模型时需要完成的事情的完整列表。我知道有人问过类似的问题。但这似乎是几年前的事了,当时人们还在使用South来处理数据库。所以我期待 Django 最新版本的答案。
我把我所知道的总结如下:
- 从 model.py 中删除 model 的代码
- 确保没有其他文件导入或使用此模型
(admin.py、views.py 等)
- Run 进行迁移 and migrate命令
- 由于 Django 不会为您清理数据库,因此您删除了以下表
手动从您的数据库中获取此模型
- 另请注意,有一个名为 ContentTypes 的表,它保存
记录您的每个型号的信息。所以你需要删除
手动记录该模型(但我不知道该怎么做
确切地。有人可以解释一下吗?)
这些都是我所知道的。有什么不对的吗?我忘记了什么吗?也许我过于谨慎,但我想保持数据库干净。
多谢!
在 Django 1.7 中,这实际上比你想象的要简单得多。假设您有一个应用程序,books
,有两个模型:Book
and BookReview
。您想要删除Book
model.
- 删除所有对
Book
代码中的模型。例如,删除ForeignKey('books.Book')
场上的BookReview
模型。无需为此更改进行单独的迁移。
- 删除以下代码
Book
模型来自books/models.py
。现在,创建一个迁移(manage.py makemigrations
)。如果您查看生成的迁移,它应该包含migrations.DeleteModel
手术。
-
运行自动生成的迁移(manage.py migrate
),并且应该询问您相关的信息ContentType
不再需要的对象:
Running migrations:
Applying books.0002_auto_20150314_0604... OK
The following content types are stale and need to be deleted:
books | book
Any objects related to these content types by a foreign key will also
be deleted. Are you sure you want to delete these content types?
您可能确实想删除内容类型。如果您不想被要求输入,您可以使用manage.py migrate --noinput
.
The DeleteModel
此迁移中的操作将删除books_book
数据库中的表,因此您根本不必担心手动清理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)