class UserForeignKey(models.ForeignKey): def __init__(self, **kwargs): kwargs['editable'] = False to = 'auth.user' super(UserForeignKey, self).__init__(to, **kwargs) def pre_save(self, model_instance, add): def set_current_user(): setattr(model_instance, self.name, get_current_user()) return super(UserForeignKey, self).pre_save(model_instance, add) return super(UserForeignKey, self).pre_save(model_instance, add) or set_current_user()