2010-09-27 12 views
123

Chcę usunąć konkretny rekord. Takich jakJak usunąć rekord w modelach Django?

Jak mogę to zrobić w django model?

+10

Dzięki za pytaniem na pytanie. Czasami RTFM trwa znacznie dłużej niż wyszukiwarka Google i SO, o czym świadczy liczba głosów oddanych w górę i liczba wyświetleń –

+3

Uzgodniona z @Freedom_Ben, ale dla przyszłych czytelników, którzy lubią instrukcję f *, tak właśnie jest. ponowne szukanie: https://docs.djangoproject.com/en/dev/topics/db/queries/#topics-db-queries-delete – Dinei

Odpowiedz

290

Istnieje kilka sposobów:

Aby bezpośrednio usuwać go:

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

Aby usunąć je z instancji:

instance = SomeModel.objects.get(id=id) 
instance.delete() 
+22

Zauważ, że pierwszy nie wywoła metody .delete() obiektu , więc jeśli masz kod "oczyszczenia" w tej metodzie, nie zostanie on wywołany. Zwykle nie jest to problem, ale warto o nim pamiętać. –

+6

@Matthew Schinckel: to prawda. Jeśli chcesz mieć niestandardową metodę usuwania, powinieneś zamiast tego używać sygnału 'pre_delete' lub' post_delete'. – Wolph

+1

Nie wiem, co się dzieje po DJango 1.4, ale tak naprawdę to ściągam wszystkie PK, a potem usuwam te PKs. Tak więc np. Jeśli usuniesz przez dowolne pole, może to być wolniejsze niż odpowiednik SQL ... :( –

Powiązane problemy