I have two questions :
- how to delete the table in django
- how to remove all of the data in table
this is my code, but not successful :
Inside a manager:
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)
As per the latest documentation, the correct method to call would be:
If you want to remove all the data from all your tables, you might want to try the command
python manage.py flush. This will delete all of the data in your tables, but the tables themselves will still exist.
See more here: https://docs.djangoproject.com/en/1.8/ref/django-admin/
There are a couple of ways:
To delete it directly:
To delete it from an instance:
instance = SomeModel.objects.get(id=id) instance.delete()
Django 1.11 delete all objects from a database table –
Entry.objects.all().delete() ## Entry being Model Name.
Refer the Official Django documentation here as quoted below –
Note that delete() is the only QuerySet method that is not exposed on a Manager itself. This is a safety mechanism to prevent you from accidentally requesting Entry.objects.delete(), and deleting all the entries. If you do want to delete all the objects, then you have to explicitly request a complete query set:
I myself tried the code snippet seen below within my
# 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)
and within my
views.py i have a view that simply renders a html page …
def data_del_4(request): obj = calc_2() ## obj.del_model_4() return render(request, 'dc_dash/data_del_4.html') ##
it ended deleting all entries from – model == model_4 , but now i get to see a Error screen within Admin console when i try to asceratin that all objects of model_4 have been deleted …
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"
Do consider that – if we do not go to the ADMIN Console and try and see objects of the model – which have been already deleted – the Django app works just as intended.
Django already has a full delete method. You just missed it by one.