Как удалить модели из Django? - PullRequest
8 голосов
/ 22 декабря 2011

В 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 polls и python manage.py sql polls для создания таблиц в базе данных. Но что, если я сделал что-то не так и больше не хочу эту модель? Какой синтаксис для его удаления?

Ответы [ 5 ]

19 голосов
/ 22 декабря 2011

Если вы не хотите удалять и повторно синхронизировать вашу текущую базу данных, лучший способ - удалить таблицу из вашей модели вручную:

$ python manage.py dbshell

> (Inside the DB shell)
> DROP TABLE {app-name}_{model-name};
14 голосов
/ 22 декабря 2011

Нет синтаксиса. Django не удаляет таблицы или столбцы. Вы должны вручную изменить базу данных или использовать такой инструмент миграции, как South.

Если вы просто играете с учебником, проще всего удалить файл базы данных sqlite и снова запустить синхронизацию.

2 голосов
/ 11 июня 2017

Почему бы просто не попробовать удалить модели из файла models.py?При запуске

python manage.py makemigrations

файл миграции должен обновляться с удаленными моделями.

1 голос
/ 25 июня 2018

Комментируя класс, который определяет модель, сделал это для меня. Однажды я сделал это и побежал python manage.py makemigrations, Я получил это как ответ: - Delete model MyModel. Затем проверил браузер БД, и он был фактически удален.

0 голосов
/ 22 декабря 2011

Обработка базы данных Django через syncdb является чисто аддитивной: любые новые модели будут добавлены, но удаленные модели не будут удалены, а измененные модели не будут изменены.

Если у вас нет данных, которые вы хотите сохранить, вы можете просто удалить и заново создать базу данных: если у вас есть что-то, что вы хотите сохранить, или даже если вы намереваетесь иметь все, что хотите чтобы сохранить, я не могу посоветовать вам достаточно сильно, чтобы использовать инструмент миграции : Юг был стандартом де-факто для каждого проекта, над которым я работал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...