我正在使用Django3.0+MariaDB。 我使用“python manage.py inspectdb>;models.py”命令从现有数据库创建了一个models.py。 我现在需要设置外键的选项。 正如您所知,在数据库中,外键可以有多个选项:第一个经典是“ON_DELETE”,第二个是“ON_UPDATE”(您甚至可以在PostgreSQL中有更多选项)。 在Django中,只有一个“on_delete”,但没有“on_update”选项,这让我感到非常惊讶。 我在官方文件上找不到这方面的信息。 无论是在一些老帖子上还是在同一个问题上,回复都不是结论性的,主要集中在“on_delete”上。 我问的是“更新”选项,没有别的。 那么,这个选项在哪里,或者为什么它没有出现在Django的ORM中
Django实际上并不使用数据库级联选项,即使对于on_delete
由于你的应用程序可以对
pre_delete
和post_delete
信号做出反应,因此以下方法有一些方便的优点,但在性能方面也有一些轻微的缺点关于
ON_UPDATE
它没有实现,而且很少使用,因为通常您永远不会更改模型id
如果您需要在数据库级别上进行特定的操作,或者在应用程序级别上对其进行模拟,以实现更好的控制(例如重写模型保存方法),则仍然可以创建SQL迁移
关于与外键无关的其他数据库约束,有一些文档与它们相关here并且特定于postgreSQL here
相关问题 更多 >
编程相关推荐