How to remove all of the data in a table using Django

后端 未结 8 1756
执笔经年
执笔经年 2020-12-12 21:12

I have two questions:

  1. How do I delete a table in Django?
  2. How do I remove all the data in the table?

This is my code, which is not succe

相关标签:
8条回答
  • 2020-12-12 21:52

    You can use the Django-Truncate library to delete all data of a table without destroying the table structure.

    Example:

    1. First, install django-turncate using your terminal/command line:
    pip install django-truncate
    
    1. Add "django_truncate" to your INSTALLED_APPS in the settings.py file:
    INSTALLED_APPS = [
        ...
        'django_truncate',
    ]
    
    1. Use this command in your terminal to delete all data of the table from the app.
    python manage.py truncate --apps app_name --models table_name
    
    0 讨论(0)
  • 2020-12-12 21:54

    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 - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects

    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 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)
    

    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 admin screencapture

    0 讨论(0)
  • 2020-12-12 21:56

    Use this syntax to delete the rows also to redirect to the homepage (To avoid page load errors) :

    def delete_all(self):
      Reporter.objects.all().delete()
      return HttpResponseRedirect('/')
    
    0 讨论(0)
  • 2020-12-12 21:57

    Using shell,

    1) For Deleting the table:

    python manage.py dbshell
    >> DROP TABLE {app_name}_{model_name}
    

    2) For removing all data from table:

    python manage.py shell
    >> from {app_name}.models import {model_name}
    >> {model_name}.objects.all().delete()
    
    0 讨论(0)
  • 2020-12-12 21:57

    There are a couple of ways:

    To delete it directly:

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

    To delete it from an instance:

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

    // don't use same name

    0 讨论(0)
  • 2020-12-12 22:01

    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)
    
    0 讨论(0)
提交回复
热议问题