【发布时间】:2019-02-23 17:37:49
【问题描述】:
我有一个关于在模型中使用 ForeignKey 的简短问题。
假设我有模型Car 和EngineType。我想要一个Car 有EngineType 作为外键来填充汽车的引擎。这很容易。
我的问题是这样的:假设EngineType 只应该显示生产中的活动实例,所以如果他们从 1970 年代开始停止制作 3.5 liter 120 hp 引擎,我不希望它出现在选择中创建新车时的发动机类型。另一部分是我希望所有记录都保留在汽车数据库中以进行历史报告。所以会发生什么我尝试删除上面提到的引擎,如果我有
on_delete=CASCADE
这不符合我的要求,因为我丢失了历史数据。如果我有
on_delete=PROTECT
我无法删除不需要的引擎模型。
你是怎么处理的?
【问题讨论】:
-
所以您不想删除过时的
EngineType模型,而只是在创建新的Car时不将它们显示在表单中,对吧?您是否想过只制作仅显示当前正在生产的EngineTypes 的自定义表单?您可以将in_production字段添加到EngineType,然后使用它进行排序。
标签: django django-models foreign-keys