2016-05-13 3 views
0

とregistredである私がモデルユーザーに信号を追加し、新しいユーザーはジャンゴで作成された場合、そのユーザーは、私が意味する、Facebookのを通じてregistredだったかどうかを知る方法を求めていますwith Facebook私はこのイベントをキャッチして、新しいCustomerモデルを保存します。あなたは私が必要なものを見ることができますコメントでDjangoのシグナル・ユーザーの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) 

: 私はそのようなことかもしれないと考えています。 ご協力いただきありがとうございます。

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') 

答えて

1

Djangoは内蔵の信号の提供しますユーザーが作成されるたびにあなたの要件に応じて上記の投稿にコードを貼り付けて編集したことに注意してください。

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) 
0

このSO POSTによると、あなたは顧客オブジェクトを保存するためにpost_save.connect()を使用することができます。

使用このような... pre_savepre_init

関連する問題