我使用django 1.7创建一个postgresql 9.3 db,其中包含几个包含外键约束的表.DB用于仓库,其中对象具有物理位置.如果一个对象(在表Stored_objects中)被删除,我也想删除它的位置,以便我的位置模型如下:
class object_positions(models.Model):
obj_id = models.ForeignKey(Stored_objects, db_column='obj_id',on_delete=models.CASCADE)
(...)
Run Code Online (Sandbox Code Playgroud)
db(在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;
Run Code Online (Sandbox Code Playgroud)
还有什么我需要做的才能在数据库中获得这个约束吗?
Django使用它自己的代码来处理级联,它们不是在数据库级别实现的.主要原因是在后端保持一致的行为,并允许模型信号触发级联删除.如果出于某种原因需要在数据库级别上进行约束,则必须自己编辑表.除非你有令人信服的理由(比如另一个应用程序访问数据库,绕过Django),我不建议这样做.
| 归档时间: |
|
| 查看次数: |
380 次 |
| 最近记录: |