如何在Django中删除?(MySQL事务)
如果你对Django有些了解,你就知道它有一个认证系统,里面有一个叫做User model
的用户模型。当然,我还有很多其他的表格,它们都和这个User
模型有外键关联。
如果我想删除这个用户,我该怎么写一个脚本(或者直接通过mysql)来删除所有和这个用户相关的表格呢?
我唯一担心的是,我可以手动去做这件事……但是如果我添加了一个新表格,却忘了把这个表格也加入到我的删除操作中,那就会出现一个问题:我会有一行数据指向一个已经被删除的、不存在的用户。
2 个回答
0
你不需要写脚本来处理这个问题。当你删除一条记录时,Django会自动删除所有相关的记录,这样就能保证数据库的完整性。
这个很简单可以测试。在后台管理界面,去删除一个用户。在确认页面上,你会看到系统中所有相关记录的列表。你可以随时用这个方法快速检查哪些记录是相互依赖的(只要你不真的点击确认)。
如果你在你的代码中用.delete()
来删除记录,所有相关的对象会自动被删除,而且没有确认的选项。
根据文档:
当Django删除一个对象时,它会模拟SQL中的“级联删除”行为,也就是说,任何指向要删除对象的外键的对象也会被一并删除。
2
根据我的理解,Django 默认会执行“级联删除”。这是什么意思呢?简单来说,当你删除一个对象时,和它相关联的其他对象也会被自动删除。你可以在这个链接中找到更多信息:http://docs.djangoproject.com/en/dev/topics/db/queries/#deleting-objects