【发布时间】:2013-08-12 16:08:52
【问题描述】:
在我的模型中,我有一个Event 类、一个Volunteer 类和一个Session 类。 Session 类具有 Event 和 Volunteer 的外键字段,并且是两者以及日期和时间的唯一耦合。总的来说,我认为志愿者和活动在技术上具有多对多关系。
使用预打包的 Django 管理员,我分别使用自己的 admin.ModelAdmin 类编辑志愿者和活动。会话在事件ModelAdmin 中内嵌编辑。
当我使用志愿者在管理界面中向活动添加新会话时,我需要自动更新志愿者的 hours 字段,以反映新添加的会话持续了多少小时(加上所有过去的会话) .目前,我在Volunteer 模型中只有一个calculate_hours 函数,每次调用它时都会迭代所有会话并找到小时的总和。我尝试在 Session 中使用自定义保存函数调用它,但在事件保存函数之后似乎永远不会调用它。我会在 Event 中尝试,但我无法确定哪些志愿者需要重新计算他们的工作时间。如果我手动转到志愿者管理页面,编辑然后保存志愿者,小时字段会更新,但这是非常不可接受的。
我看到在管理站点上保存内联对象时有很多关于 Django 问题的问题,特别是对于 ManyToMany 字段。在阅读了许多这些问题之后,我不确定他们所说的是否适用于我的情况——也许我需要在某处接收信号,或者在特殊位置包含自定义保存,或者在我的 @ 中调用 save_model 987654332@ class...我只是不知道。解决此问题的最佳方法是什么?
【问题讨论】:
标签: django django-models django-admin django-signals