Note that there are some explanatory texts on larger screens.

plurals
  1. POdjango-registration auto create UserProfile
    primarykey
    data
    text
    <p>I'm using django-registration and I'm trying to connect to its signals to automatically create a UserProfile. </p> <p>Signal definition:</p> <pre><code>from django.dispatch import Signal # A new user has registered. user_registered = Signal(providing_args=["user", "request"]) </code></pre> <p>Signal send by django-registration:</p> <pre><code> def register(self, request, **kwargs): """ Create and immediately log in a new user. """ username, email, password = kwargs['username'], kwargs['email'], kwargs['password1'] User.objects.create_user(username, email, password) # authenticate() always has to be called before login(), and # will return the user we just created. new_user = authenticate(username=username, password=password) login(request, new_user) signals.user_registered.send(sender=self.__class__, user=new_user, request=request) return new_user </code></pre> <p>My signal connect:</p> <pre><code>from registration.signals import * from core.models import UserProfile from django.contrib.auth.models import User def createUserProfile(sender, instance, **kwargs): UserProfile.objects.get_or_create(user=instance) user_registered.connect(createUserProfile, sender=User) </code></pre> <p>Needless to say no UserProfile is being created. What am I missing here?</p> <p>Thanks a lot!</p> <p><strong>EDIT:</strong> I moved my connect() and its corresponding method to a model.py and still no luck. </p> <p>New code:</p> <pre><code>from django.db import models from django.contrib import auth from django.contrib.auth import login from core.forms import AuthForm from registration.signals import * from django.contrib.auth.models import User # Create your models here. class UserProfile(models.Model) : user = models.ForeignKey(User, unique=True) def __unicode__(self): return self.user.username def createUserProfile(sender, instance, **kwargs): print "creating profile" UserProfile.objects.get_or_create(user=instance) user_registered.connect(createUserProfile, sender=User) </code></pre> <p>I'm using Pycharm to debug, and in the very beginning my breakpoint on user_registered.connect() is hit. So I assume that connect() is being registered correctly. However, I still don't see createUserProfile being run. Anything else I'm missing?</p> <p>Thanks!</p> <p><strong>ANSWER:</strong> Doh. My connect and receiver code was wrong. Correct code:</p> <pre><code>def createUserProfile(sender, user, request, **kwargs): UserProfile.objects.get_or_create(user=user) user_registered.connect(createUserProfile) </code></pre> <p>Realized it after I read signals.py in django-registration</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload