gpt4 book ai didi

django 在创建 Postgresql-DB 时忽略 on_delete=Cascade

转载 作者:行者123 更新时间:2023-11-29 11:32:48 26 4
gpt4 key购买 nike

我使用 django 1.7 创建一个 postgresql 9.3 数据库,其中包含几个包含外键约束的表。数据库用于对象具有物理位置的仓库。如果一个对象(在表 Stored_objects 中)被删除,我也想删除它的位置,这样我的位置模型看起来像:

class object_positions(models.Model):

obj_id = models.ForeignKey(Stored_objects, db_column='obj_id',on_delete=models.CASCADE)
(...)

数据库中的约束(在 syncdb 之后)看起来像这样:

ALTER TABLE object_positions
ADD CONSTRAINT stored_obj_fkey FOREIGN KEY (obj_id)
REFERENCES "Stored_objects" (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION;

我还需要做些什么才能在数据库中正确设置此约束吗?

最佳答案

Django 使用它自己的代码来处理级联,它们不是在数据库级别上实现的。主要原因是为了在后端保持一致的行为,并允许为级联删除触发模型信号。如果由于某种原因你想要数据库级别的约束,你将不得不自己编辑表。我不会推荐,除非你有一个令人信服的理由(比如另一个应用程序访问数据库,绕过 Django)。

关于django 在创建 Postgresql-DB 时忽略 on_delete=Cascade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31047670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com