2016-05-13 1 views
0

Je demande comment ajouter un signal dans le modèle utilisateur et de savoir si cet utilisateur a été déposée par Facebook, je veux dire, si un nouveau utilisateur est créé dans Django avec Facebook Je veux attraper cet événement et enregistrer un nouveau modèle client. Je crois que cela pourrait être quelque chose comme ça:Django Signal utilisateur lors de registred avec facebook

# SIGNALS AND LISTENERS 
from django.contrib.auth.models import User 
from django.db.models import signals 
from django.dispatch import dispatcher 
form customers.model import Customer 

# User 
def user_post_save(sender, instance, signal, *args, **kwargs): 
    # Creates user profile 
    if user # <- SOMETHGING LIKE IF USER IS LOGGED IN WITH FACEBOOK... 
     customer = Customer.objects.get_or_create(owner=instance) 

dispatcher.connect(user_post_save, signal=signals.post_save, sender=User) 

Dans le commentaire que vous pouvez voir ce que je dois. Merci pour votre aide.

Répondre

1

Django fournit des signaux intégrés: pre_save, pre_init ...

utiliser cela comme:

def password_change_signal(sender, instance, **kwargs): 
    try: 
     user = User.objects.get(username=instance.username) 
     if not hasattr(user, 'userprofile'): 
      print 'has no profile' 
      return 
     if not user.password == instance.password: 
      print 'setting vals' 
      profile = user.get_profile() 
      profile.force_password_change = False 
      profile.save() 
    except User.DoesNotExist: 
     pass 

signals.pre_save.connect(password_change_signal, sender=User,dispatch_uid='members.models.UserProfile') 

0

Selon cette SO POST, vous pouvez utiliser post_save.connect() pour sauver objet client chaque fois qu'un utilisateur est créé. Veuillez noter que j'ai collé et édité le code dans le courrier mentionné ci-dessus selon vos conditions.

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

def create_customer(sender, **kwargs): 
    user = kwargs["instance"] 
    if kwargs["created"]: 
     customer = user.models.Customer() 
     customer.setUser(sender) 
     customer.save() 

post_save.connect(create_customer, sender=User)