• 删除对象

    删除对象

    删除数据库中的对象只需调用该对象的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()