Django Book: удаление объектов

Автор: | 03/10/2015
 

django_logo_2Предыдущая часть.

Что бы удалить объект из базы — достаточно просто вызвать метод delete():

In [34]: p = Publisher.objects.get(name="O'Reilly")

In [35]: p.delete()

In [36]: Publisher.objects.all()
Out[36]: [<Publisher: Apress>, <Publisher: Apress Publishing>]

Вы так же можете удалить группу объектов с помощью того же метода delete(). Такое действие схоже с update(), которое мы рассматривали в предыдущей части:

In [37]: Publisher.objects.filter(country='USA').delete()

In [38]: Publisher.objects.all().delete()

In [39]: Publisher.objects.all()
Out[39]: []

Будьте острожны с удалением данных. В качестве меры предосторожни перед удалением всех данных  в таблице — Django требует явного указания all(). Например, такой код не будет работать:

In [40]: Publisher.objects.delete()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-40-36faaf1974de> in <module>()
----> 1 Publisher.objects.delete()

AttributeError: 'Manager' object has no attribute 'delete'

Но сработает, если вы добавите метод all():

In [41]: Publisher.objects.all().delete()

Если вы хотите удалить какой-то набор данных — вам не требуется использовать all():

In [41]: Publisher.objects.filter(country='USA').delete()

Конец третьей главы.

Оглавление.