web-dev-qa-db-fra.com

Comment supprimer toutes les données d'une table à l'aide de Django

J'ai deux questions :

  1. comment supprimer la table dans Django
  2. comment supprimer toutes les données du tableau 

c'est mon code, mais pas réussi:

Reporter.objects.delete()
79
zjm1126

Dans un 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)
96
Tiago

Selon la dernière documentation , la méthode correcte à appeler serait:

Reporter.objects.all().delete()
56
Ash

Si vous souhaitez supprimer toutes les données de toutes vos tables, essayez la commande python manage.py flush. Cela supprimera toutes les données de vos tables, mais les tables elles-mêmes existeront toujours.

Voir plus ici: https://docs.djangoproject.com/fr/1.8/ref/Django-admin/

8
user2817997

Django 1.11 supprimer tous les objets d'une table de base de données - 

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

Reportez-vous à la documentation officielle de Django citée ci-dessous - https://docs.djangoproject.com/fr/1.11/topics/db/queries/#deleting-objects

Notez que delete () est la seule méthode QuerySet qui n'est pas exposée sur un gestionnaire lui-même. C'est un mécanisme de sécurité qui vous évite de demander accidentellement Entry.objects.delete () et de supprimer toutes les entrées. Si vous souhaitez supprimer tous les objets, vous devez explicitement demander un jeu de requêtes complet:

J'ai moi-même essayé l'extrait de code vu ci-dessous dans mon 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)

et dans mon views.py j'ai une vue qui rend simplement une page html ... 

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

il a mis fin à la suppression de toutes les entrées de - model == model_4, mais maintenant, je vois un écran d'erreur dans la console d'administration lorsque j'essaie de vérifier que tous les objets de model_4 ont été supprimés ...

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" 

Ne considérez pas que, si nous n'allons pas dans la console ADMIN et essayons de voir les objets du modèle déjà supprimés, l'application Django fonctionne comme prévu. 

Django admin screencapture

2
Rohit Dhankar

Il y a deux manières:

Pour le supprimer directement:

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

Pour le supprimer d'une instance:

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

// n'utilise pas le même nom

0
Ashish Gupta