Accessing the user's request in a post_save signal

Mo J. Mughrabi picture Mo J. Mughrabi · Jan 17, 2011 · Viewed 28.7k times · Source

I have done the below post_save signal in my project.

from django.db.models.signals import post_save
from django.contrib.auth.models import User

# CORE - SIGNALS
# Core Signals will operate based on post

def after_save_handler_attr_audit_obj(sender, **kwargs):
    print User.get_profile()

    if hasattr(kwargs['instance'], 'audit_obj'):
        if kwargs['created']:
            kwargs['instance'].audit_obj.create(operation="INSERT", operation_by=**USER.ID**).save()
        else:
            kwargs['instance'].audit_obj.create(operation="UPDATE").save()


# Connect the handler with the post save signal - Django 1.2
post_save.connect(after_save_handler_attr_audit_obj, dispatch_uid="core.models.audit.new")

The operation_by column, I want to get the user_id and store it. Any idea how can do that?

Answer

Ignacio Vazquez-Abrams picture Ignacio Vazquez-Abrams · Jan 17, 2011

Can't be done. The current user is only available via the request, which is not available when using purely model functionality. Access the user in the view somehow.