2011-12-21 102 views
7

在Django中,如何删除已同步到数据库中的模型?如何从django中删除模型?

例如在Django教程页面有这个下面的代码

from django.db import models 

class Poll(models.Model): 
    question = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 

class Choice(models.Model): 
    poll = models.ForeignKey(Poll) 
    choice = models.CharField(max_length=200) 
    votes = models.IntegerField() 

然后我用python manage.py sql pollspython manage.py sql polls创建表到数据库中。但是如果我做错了什么,又不想要那个模型呢。删除它的语法是什么?

回答

12

没有语法。 Django不会删除表或列。您必须手动更改数据库或使用像South这样的迁移工具。

如果justing与教程玩弄的更简单的方法是删除你的SQLite数据库文件,然后再次运行同步。

+1

没有manage.py命令,要么会替你的模型? – starcorn 2011-12-21 22:56:15

+4

@starcorn尝试django-admin.py冲洗 – 2011-12-21 23:03:47

+0

由于更新到最新版本1.11'蟒蛇manage.py迁移yourapp zero'将撤消迁移 – Sarit 2017-09-15 11:13:21

0

Django的数据库通过syncdb处理纯属添加剂:任何新车型将增加,但删除的车型将不会被删除,改款车型将不会被修改。

如果您没有任何要保留的数据,那么您只需删除并重新创建数据库即可:如果您有任何要保留的内容,或者即使您想要保留任何内容,我无法给您足够的建议使用迁移工具South已成为我工作过的每个项目的事实标准。

18

如果你不想删除并重新同步您的当前数据库,最好的办法是从手工模型中删除该表:

$ python manage.py dbshell 

> (Inside the DB shell) 
> DROP TABLE {app-name}_{model-name}; 
+0

现在manage.py migrate抱怨原始表不再存在。 – EddyTheB 2018-02-14 10:45:50

1

为什么不能简单地尝试从模型删除模型.py文件?当您运行

python manage.py makemigrations

的迁移文件应与删除模型进行更新。

+0

谢谢。这可以确保它将多个表按外键顺序删除 – Maruthi 2017-07-26 09:06:27

0

我试图注释掉,我想删除和添加了一个新的模式。然后,我做了python manage.py makemigrations之后,它问我是否重命名了我的模型。我回答“否”,之前的(评论)模型被删除。 所以我认为它会删除数据库