Подтвердить что ты не робот

Как удалить все данные в таблице с помощью Django

У меня есть два вопроса:

  1. Как мне удалить таблицу в Django?
  2. Как мне удалить все данные в таблице?

Это мой код, который не удаётся:

Reporter.objects.delete()
4b9b3361

Ответ 1

Внутри менеджера:

def delete_everything(self):
    Reporter.objects.all().delete()

def drop_table(self):
    cursor = connection.cursor()
    table_name = self.model._meta.db_table
    sql = "DROP TABLE %s;" % (table_name, )
    cursor.execute(sql)

Ответ 2

Согласно последней документации, правильный метод для вызова будет:

Reporter.objects.all().delete()

Ответ 3

Если вы хотите удалить все данные из всех своих таблиц, вы можете попробовать выполнить команду python manage.py flush. Это приведет к удалению всех данных в ваших таблицах, но сами таблицы все равно будут существовать.

Подробнее здесь: https://docs.djangoproject.com/en/1.8/ref/django-admin/

Ответ 4

Django 1.11 удалите все объекты из таблицы базы данных -

Entry.objects.all().delete()  ## Entry being Model Name. 

Обратитесь к официальной документации Django здесь, как указано ниже - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects

Обратите внимание, что delete() - единственный метод QuerySet, который не отображается в самом Менеджере. Это механизм безопасности, который предотвращает случайное обращение к Entry.objects.delete() и удаление всех записей. Если вы хотите удалить все объекты, вам необходимо явно запросить полный набор запросов:

Я сам пробовал фрагмент кода, увиденный ниже в моем somefilename.py

    # for deleting model objects
    from django.db import connection
    def del_model_4(self):
        with connection.schema_editor() as schema_editor:
            schema_editor.delete_model(model_4)

и внутри моего views.py у меня есть представление, которое просто отображает html-страницу...

  def data_del_4(request):
      obj = calc_2() ## 
      obj.del_model_4()
      return render(request, 'dc_dash/data_del_4.html') ## 

он закончил удаление всех записей из - model == model_4, но теперь я вижу экран ошибки в консоли администратора, когда я пытаюсь выполнить асерирование, что все объекты model_4 были удалены...

ProgrammingError at /admin/dc_dash/model_4/
relation "dc_dash_model_4" does not exist
LINE 1: SELECT COUNT(*) AS "__count" FROM "dc_dash_model_4" 

Учтите, что - если мы не перейдем в Консоль ADMIN и не попытаемся увидеть объекты модели, которые уже были удалены, приложение Django работает так, как предполагалось.

django admin screencapture

Ответ 5

Есть несколько способов:

Чтобы удалить его напрямую:

SomeModel.objects.filter(id=id).delete()

Чтобы удалить его из экземпляра:

instance1 = SomeModel.objects.get(id=id)
instance1.delete()

//не используйте одно и то же имя

Ответ 6

Django уже имеет полный метод удаления. Вы просто пропустили его одним.

Reporter.objects.all().remove()