wake-up-neo.com

So entfernen Sie alle Daten in einer Tabelle mit Django

Ich habe zwei Fragen :

  1. so löschen Sie die Tabelle in Django
  2. so entfernen Sie alle Daten in der Tabelle 

dies ist mein Code, aber nicht erfolgreich:

Reporter.objects.delete()
79
zjm1126

In einem 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

Nach der neuesten Dokumentation wäre die korrekte Methode:

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

Wenn Sie alle Daten aus allen Tabellen entfernen möchten, versuchen Sie es mit dem Befehl python manage.py flush. Dadurch werden alle Daten in Ihren Tabellen gelöscht. Die Tabellen selbst sind jedoch noch vorhanden.

Weitere Informationen finden Sie hier: https://docs.djangoproject.com/de/1.8/ref/Django-admin/

8
user2817997

Django 1.11 lösche alle Objekte aus einer Datenbanktabelle - 

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

Lesen Sie die offizielle Django-Dokumentation wie folgt: - https://docs.djangoproject.com/de/1.11/topics/db/queries/#deleting-objects

Beachten Sie, dass delete () die einzige QuerySet-Methode ist, die auf einem Manager selbst nicht angezeigt wird. Dies ist ein Sicherheitsmechanismus, um zu verhindern, dass Sie versehentlich Entry.objects.delete () anfordern und alle Einträge löschen. Wenn Sie alle Objekte löschen möchten, müssen Sie explizit einen vollständigen Abfragesatz anfordern:

Ich selbst habe den Code-Ausschnitt aus meinem somefilename.py ausprobiert. 

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

und in meinem views.py habe ich eine Ansicht, die einfach eine HTML-Seite rendert ... 

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

es endete mit dem Löschen aller Einträge aus - model == model_4, aber jetzt sehe ich einen Fehlerbildschirm in der Admin-Konsole, wenn ich versuche zu bestätigen, dass alle Objekte von model_4 gelöscht wurden ...

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" 

Beachten Sie, dass - wenn wir nicht zur ADMIN-Konsole gehen und versuchen, Objekte des Modells zu sehen, die bereits gelöscht wurden, die Django-App genau wie beabsichtigt funktioniert. 

Django Admin Screencapture

2
Rohit Dhankar

Es gibt verschiedene Möglichkeiten:

Um es direkt zu löschen:

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

So löschen Sie es aus einer Instanz:

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

// Verwenden Sie nicht denselben Namen

0
Ashish Gupta