Django:post_save信号和请求对象

时间:2010-11-27 03:04:06

标签: django

这里有两个模型类:

class DashboardVersion(models.Model):
    name = models.CharField(_("Dashboard name"),max_length=100)
    description = models.TextField(_("Description/Comment"),null=True,blank=True)
    modifier = models.ForeignKey(User,editable=False,related_name="%(app_label)s_%(class)s_modifier_related")
    modified = models.DateField(editable=False)

class Goal(models.Model):
    goal = models.TextField(_("Goal"))
    display_order = models.IntegerField(default=99999)
    dashboard_version = models.ForeignKey(DashboardVersion)

当目标被编辑,添加,删除等时,我想将DashboardVersion.modifier更改为修改它并将DashboardVersion.modifed更改为当前日期的用户。

我正在尝试使用信号来实现这一点。但似乎post_save信号不包含request。或者我可以从某个地方获取它还是我必须创建自己的信号?

或者,我应该做一些完全不同的事情吗?

谢谢! :-) 埃里克

1 个答案:

答案 0 :(得分:1)

我想说最直接的事情就是只更新处理DashboardVersion更新的视图中的Goal。如果在处理Goal更新的同一模块中有多个视图,则可以将DashboardVersion更新逻辑分解为单独的函数。

如果您已经开始使用信号,那么您可能会与线程本地中间件一起破解,但我认为最简单的方法通常是最好的。