Chcę usunąć konkretny rekord. Takich jakJak usunąć rekord w modelach Django?
Jak mogę to zrobić w django model
?
Chcę usunąć konkretny rekord. Takich jakJak usunąć rekord w modelach Django?
Jak mogę to zrobić w django model
?
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()
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ć. –
@Matthew Schinckel: to prawda. Jeśli chcesz mieć niestandardową metodę usuwania, powinieneś zamiast tego używać sygnału 'pre_delete' lub' post_delete'. – Wolph
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 ... :( –
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ń –
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