我想知道当我们想要从Django中删除模型时,是否有任何人可以提供需要完成的事情的完整列表。我知道有人提出了类似的问题。但似乎是几年前人们还在使用南方来处理数据库。所以我希望得到最近版本的Django的答案。
我总结如下所知:
这些都是我所知道的。有什么不对的吗?我忘了什么吗?也许我过于谨慎,但我想保持数据库清洁。 非常感谢!
答案 0 :(得分:24)
在Django 1.7中,这实际上比你想象的要简单得多。我们假设您有一个应用books
,有两个模型:Book
和BookReview
。您想要删除Book
模型。
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
。
此迁移中的DeleteModel
操作会删除数据库中的books_book
表,因此您根本不必担心手动清理。