在启动新系统时,我目前正在维护旧系统。最近我注意到,尝试从特定模型中删除某些对象时出现超时。我已将此归结为与以下问题相关,该问题的答案已被接受:Django admin hangs (until timeout error) for a specific model when trying to edit/create
我遇到的问题是相关的对象与所讨论的模型不是直接相关的。
例如,我有以下模型(由于我公司的IP,其名称通常模糊不清):
ModelA
是我从Django Admin网站删除时看到的模型ModelB
,其中包含ModelA
的ForeignKey字段ModelC
,其中包含ModelB
的ForeignKey字段ModelD
,其中包含ModelC
的ForeignKey字段ModelE
,其中包含ModelD
的ForeignKey字段型号详情:
ModelE
可以包含成千上万个条目,对于ModelC
。另外,ModelC
的任何条目都可以包含成千上万个条目当前,当我尝试删除ModelB
时,Django尝试一直生成所有关联对象,直到ModelA
,这在某些情况下会导致超时,并且关联ModelE
的数量很高和ModelC
。
是否有办法通过覆盖自定义模板(例如delete_confirmation_template)或通过任何其他方法来避免这种情况?理想情况下,我仍然希望显示摘要,但不确定此问题的性质是否可能。
有关上下文的一些细节:
答案 0 :(得分:0)
从评论中的讨论中,我得出以下结论:
on_delete
的模型设置为CASCADE
是不正确的,并且在尝试删除模型时导致检索相关对象的时间非常长on_delete
设置为PROTECT
如果没有相关的受保护对象,这仍然允许我通过Django管理站点从该模型中删除对象,这最终是我想要的功能