post_save signal not working in Django 1.7

293 views
Skip to first unread message

Zach LeRoy

unread,
Jan 16, 2015, 6:14:09 PM1/16/15
to django...@googlegroups.com
I have a block of code that works fine in Django 1.6.10 but does not work at all in Django 1.7.3.  I would expect my log statement to print every time a Django User is created and this is the behavior in 1.6.10:

import logging

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

log = logging.getLogger(__name__)


class UserProfile(models.Model):
    uuid = models.CharField(max_length=36)
    user = models.OneToOneField(User)


@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
    """
    When a new user is created, add a UserProfile
    """
    log.debug('received post save signal: {}'.format(instance))
    if created:
        UserProfile.objects.create(user=instance)

Collin Anderson

unread,
Jan 19, 2015, 3:32:19 PM1/19/15
to django...@googlegroups.com
Hi,

Are you using AUTH_USER_MODEL?

I assume your logging is set up correctly?

Here's a snippet from one of my projects if you want to try out some similar code:

def user_save_handler(sender, **kwargs):
    user
= kwargs['instance']
   
try:
        user
.userprofile
   
except UserProfile.DoesNotExist:
        user_profile
= UserProfile(user=user)
        user_profile
.__dict__.update(user.__dict__)
        user_profile
.save()
post_save
.connect(user_save_handler, sender=User)

Collin

Luis Matoso

unread,
Jan 19, 2015, 6:22:37 PM1/19/15
to django...@googlegroups.com
Something similar is happening with me too: on a post_save of model it isn't created yet on database, so several 
error are raised by functions which expect that it is already on DB.

When the post_save handler ends, the object is saved normally.

Collin Anderson

unread,
Jan 22, 2015, 3:54:01 AM1/22/15
to django...@googlegroups.com
Hi,

Does the object in post_save have a pk/id?

Are you using transactions?

Collin
Reply all
Reply to author
Forward
0 new messages