Ich möchte einen bestimmten Datensatz löschen. Wie zum Beispiel
delete from table_name where id = 1;
Wie kann ich dies in einem Django-Modell tun?
Ich möchte einen bestimmten Datensatz löschen. Wie zum Beispiel
delete from table_name where id = 1;
Wie kann ich dies in einem Django-Modell tun?
En delete()
Diese Methode wird verwendet, um Modellinstanzen aus einer Datenbank zu löschen. Diese Methode löscht das Objekt sofort.
Beispiel:
Um einen Datensatz zu löschen:
data_to_be_deleted = Modelname.objects.get(fieldname = value)
data_to_be_deleted.delete()
Als get-Methode gibt ein einzelnes Objekt aus queryset nur einzigen Datensatz gelöscht werden. Wenn Wert geliefert existiert nicht, wird dies einen Fehler auslösen. Wenn es multilpe Datensätze in der Tabelle für den gleichen Wert dann auch wird es einen Fehler auslösen, so gute Praxis ist es, einen einzigen eindeutigen Wert zu verwenden, während mit get.
Zur Löschung mehrerer Datensätze gemäß einer Bedingung:
Bei der bedingungsbasierten Löschung wird die Filtermethode auf die Abfrage angewendet und dann der Löschvorgang aufgerufen.
data_to_be_deleted = Modelname.objects.filter(fieldname = value)
data_to_be_deleted.delete()
Um alle Datensätze zu löschen:
Um alle Modellinstanzen/Datensätze aus der Datenbanktabelle zu löschen, müssen Sie die Methode delete für alle
data_to_be_deleted = Modelname.objects.all()
data_to_be_deleted.delete()
Hinweis: Der Code kann in einer einzigen Zeile geschrieben werden als Modelname.objects.all().delete()
aber zum besseren Verständnis habe ich mehrere Zeilen verwendet.
Sie können auch Folgendes verwenden get_object_or_404()
zu verwenden, anstatt direkt get()
da wir bei der Verwendung von get() explizit den Fehler 404 auslösen.
Aber bei der Verwendung von get_object_or_404
wird sie automatisch durchgeführt.
get_object_or_404
Nach 4.0 docs, Ruft get() auf ein bestimmtes Modell-Manager, aber es wirft Http404 anstelle des Modells DoesNotExist Ausnahme.
Verwenden Sie es wie:
Für die Massenlöschung:
AnyModel.objects.filter(id=id).delete()
Um eine einzelne Instanz zu löschen, verwenden Sie get_object_or_404()
anstelle von get()
auf die folgende Weise:
instance=get_object_or_404(anyModel,id=id)
instance.delete()
Wenn nicht gefunden, wird automatisch 404 ausgegeben.
Es ist so einfach wie der folgende Aufruf.
SomeModel.objects.get(pk=1).delete()
# Or
SomeModel.objects.filter(pk=1).delete()
# SQL equivalent
# delete from table_name where id = 1;
Falls Sie mehrere Datensätze auf der Basis von id entfernen möchten, verwenden Sie die __in
Abfrage Nachschlagen
SomeModel.objects.fitler(pk__in=[1,2,3,4,5,...]).delete()
# SQL equivalent
# delete from table_name where id in (1,2,4,5,...);
Wenn Sie alle Datensätze löschen wollen, verwenden Sie .all()
um alle Abfragen abzurufen, dann .delete()
.
SomeModel.objects.all().delete()
# SQL equivalent
# delete from table_name;
Sie können die Objekte direkt über das Admin-Panel löschen. Es gibt auch die Möglichkeit, bestimmte oder ausgewählte IDs über eine interaktive Shell zu löschen, indem Sie die Shell python3 manage.py (python3 in Linux) eingeben. Wenn Sie möchten, dass der Benutzer die Objekte über den Browser (mit der zur Verfügung gestellten visuellen Schnittstelle) löscht, z. B. einen Mitarbeiter mit der ID 6 aus der Datenbank, können wir dies mit dem folgenden Code erreichen, emp = employee.objects.get(id=6).delete()
Dadurch wird der Mitarbeiter mit der ID 6 gelöscht.
Wenn Sie anstelle von get() alle in der DB vorhandenen Mitarbeiter löschen möchten, geben Sie all() wie folgt an: employee.objects.all().delete()
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
13 Stimmen
Ich stimme @Freedom_Ben zu, aber für künftige Leser, die das f*-Handbuch sowieso mögen, ist das genau das Richtige: docs.djangoproject.com/de/dev/topics/db/queries/