user290043
user290043

Reputation:

Django: post_save signal and request object

Here two of my model classes:

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)

When a Goal is edited, added, deleted, etc., I want to change the DashboardVersion.modifier to the user who modified it and the DashboardVersion.modifed to the current date.

I am trying to implement this using signals. It seems though, that the post_save signal does not contain the request. Or can I get it from somewhere or do I have to create my own signal?

Or, should I do something completely different?

Thanks! :-) Eric

Upvotes: 2

Views: 2198

Answers (1)

Chris Lawlor
Chris Lawlor

Reputation: 48962

I'd say the most straightforward thing to do would be to just update the DashboardVersion in the view that processes the Goal update. If you have multiple views in the same module that handle Goal updates, you could factor out the DashboardVersion update logic into a separate function.

If you're dead set on using signals, you could probably hack something together with a thread locals middleware, but I'd say the simplest approach is usually best.

Upvotes: 1

Related Questions