如何从django中删除模型?

sta*_*orn 9 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()
Run Code Online (Sandbox Code Playgroud)

然后我使用python manage.py sql polls并将python manage.py sql polls表创建到数据库中.但是如果我做错了什么并且不再需要那个模型呢?删除它的语法是什么?

jul*_*ria 20

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

$ python manage.py dbshell

> (Inside the DB shell)
> DROP TABLE {app-name}_{model-name};
Run Code Online (Sandbox Code Playgroud)

  • 现在,manage.py migrate 抱怨原始表不再存在。 (7认同)

Ces*_*ssa 15

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

如果您只是玩教程,更简单的方法是删除您的sqlite数据库文件并再次运行同步.

  • @starcorn试试django-admin.py flush (4认同)

小智 9

为什么不简单地尝试从您的 models.py 文件中删除模型?当你跑

python manage.py makemigrations

应使用已删除的模型更新迁移文件。

  • 执行 python manage.py makemigrations 后,然后执行 python manage.py migrate 以从数据库中删除模型 (2认同)