Réponses:
À l'intérieur d'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)
'DELETE FROM %s' % (table_name, )
pour cela, laissant la table vide mais intacte.
Selon la dernière documentation , la méthode correcte à appeler serait:
Reporter.objects.all().delete()
delete
méthode de l'instance est appelée, alors qu'avec l' delete
appel sur QuerySet
elle ne l'est pas.
Si vous souhaitez supprimer toutes les données de toutes vos tables, vous pouvez essayer la commande python manage.py flush
. Cela supprimera toutes les données de vos tables, mais les tables elles-mêmes existeront toujours.
En savoir plus ici: https://docs.djangoproject.com/en/1.8/ref/django-admin/
Django 1.11 supprime 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 ici comme cité ci-dessous - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects
Notez que delete () est la seule méthode QuerySet qui n'est pas exposée sur un Manager lui-même. Il s'agit d'un mécanisme de sécurité pour vous empêcher de demander accidentellement Entry.objects.delete () et de supprimer toutes les entrées. Si vous souhaitez supprimer tous les objets, vous devez demander explicitement un jeu de requêtes complet:
J'ai moi-même essayé l'extrait de code 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 fini de supprimer toutes les entrées de - model == model_4, mais maintenant je peux voir un écran d'erreur dans la console d'administration lorsque j'essaye 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"
Considérez que - si nous n'allons pas dans la console ADMIN et essayons de voir les objets du modèle - qui ont déjà été supprimés - l'application Django fonctionne comme prévu.
Il y a plusieurs façons:
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