Cómo eliminar todos los datos de una tabla usando django


Tengo dos preguntas :

  1. cómo eliminar la tabla en django
  2. cómo eliminar todos los datos de la tabla

Este es mi código, pero no tiene éxito :

Reporter.objects.delete()
Author: Brian Tompsett - 汤莱恩, 2010-12-26

5 answers

Dentro de un gestor:

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)
 83
Author: Tiago,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-26 03:58:47

Según la última documentación , el método correcto para llamar sería:

Reporter.objects.all().delete()
 48
Author: Ash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-28 13:34:32

Si desea eliminar todos los datos de todas sus tablas, es posible que desee probar el comando python manage.py flush. Esto eliminará todos los datos de sus tablas,pero las tablas seguirán existiendo.

Ver más aquí: https://docs.djangoproject.com/en/1.8/ref/django-admin/

 8
Author: user2817997,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-23 00:39:21

Django 1.11 eliminar todos los objetos de una tabla de base de datos -

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

Consulte la documentación oficial de Django aquí como se cita a continuación - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects

Tenga en cuenta que delete() es el único método QuerySet que no está expuesto en un Administrador. Este es un mecanismo de seguridad para evitar que solicite la entrada accidentalmente.objeto.eliminar (), y borrar todas las entradas. Si desea eliminar todos los objetos, a continuación, debe solicitar explícitamente un conjunto de consultas completo:

Yo mismo probé el fragmento de código que se ve a continuación dentro de mi 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)

Y dentro de mi views.py tengo una vista que simplemente renderiza una página html ...

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

Terminó borrando todas las entradas de - model == model_4 , pero ahora puedo ver una pantalla de error dentro de Admin console cuando intento comprobar que todos los objetos de model_4 han sido eliminados ...

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" 

Tenga en cuenta que - si no vamos a la consola de ADMINISTRACIÓN y tratar de ver los objetos del modelo-que ya han sido eliminados - la aplicación Django funciona como estaba previsto.

Django admin screencapture

 1
Author: Rohit Dhankar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-26 05:32:46

Hay un par de maneras:

Para eliminarlo directamente:

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

Para eliminarlo de una instancia:

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

/ / no uses el mismo nombre

 0
Author: Ashish Gupta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-18 08:34:03