删除对象

删除数据库中的对象只需调用该对象的delete()方法即可:

  1. >>> p = Publisher.objects.get(name="O'Reilly")
  2. >>> p.delete()
  3. >>> Publisher.objects.all()
  4. [<Publisher: Apress Publishing>]

同样我们可以在结果集上调用delete()方法同时删除多条记录。这一点与我们上一小节提到的update()方法相似:

  1. >>> Publisher.objects.filter(country='USA').delete()
  2. >>> Publisher.objects.all().delete()
  3. >>> Publisher.objects.all()
  4. []

删除数据时要谨慎! 为了预防误删除掉某一个表内的所有数据,Django要求在删除表内所有数据时显示使用all()。 比如,下面的操作将会出错:

  1. >>> Publisher.objects.delete()
  2. Traceback (most recent call last):
  3. File "<console>", line 1, in <module>
  4. AttributeError: 'Manager' object has no attribute 'delete'

而一旦使用all()方法,所有数据将会被删除:

  1. >>> Publisher.objects.all().delete()

如果只需要删除部分的数据,就不需要调用all()方法。再看一下之前的例子:

  1. >>> Publisher.objects.filter(country='USA').delete()