2013-06-21 10 views
0

django 사용자를 사용자 프로필로 확장하려면 https://stackoverflow.com/a/965883/1657010 링크를 따라야합니다. 나는 사용자 프로필 및 사용자 모두 생성 및 EMAILID, dateCreated 같은 사용자 프로필에서 사용자 정의 필드가 채워되도록 사용자를 만들려면 어떻게해야합니까 나는 확실하지 않다 무엇django (1.3)에서 사용자 프로필로 사용자 확장

#in models.py 
from django.contrib.auth.models import User 
from django.db.models.signals import post_save 

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    emailId = models.CharField(max_length=200) 
    dateCreated = models.DateTimeField(blank=True, null=True) 
    #other fields here 

    def __str__(self): 
      return "%s's profile" % self.user 

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     profile, created = UserProfile.objects.get_or_create(user=instance) 

post_save.connect(create_user_profile, sender=User) 

#in settings.py 
AUTH_PROFILE_MODULE = 'myapp.UserProfile' 

은? 나는

def register_user(request): 

    json_data = json.loads(request.raw_post_data) 
    email=json_data['email'].lower() 
    pwd = json_data['password'] 
#hard-coded values for testing 
    UserProfile.user = User.objects.create_user('john', email, pwd) 
    userProfile, created = UserProfile.objects.get_or_create(emailId=email) 
    userProfile.password=pwd 

다음 한 views.py에서

는 그러나, 나는 오류 AttributeError를 얻을 : '사용자 프로필'개체가 어떤 속성 'USER_ID를'이 없습니다. 여기 어딘가에서 개념을 뒤섞어 쓰고 있다고 생각합니다. 어떤 도움을 주셔서 감사합니다.

답장을 보내 주셔서 감사합니다. 제공 한 코드가 작동했습니다! 모두가 비슷한 경우 궁금

  user = User.objects.create_user('john', email, pwd) 
      userProfile = user.get_profile() 
      userProfile.emailId = email 
      user.save() 
      userProfile.save() 

, 또는 다른 이상 하나의 장점은 다시()

감사를 get_profile를 사용하여 발생했을 경우 또한 다음과 같은 사용하여 동일한 작업을 수행 할 수 있었다!

+0

감사 :

UserProfile.user = User.objects.create_user('john', email, pwd) 

당신이 뭔가를 할 수 있습니다. 예, AUTH_PROFILE 모듈을 대체했습니다. –

답변

2

당신은 당신의 USERPROFILE 클래스보다는 여기의 인스턴스에 직접 할당하려는 : 답장에 대한

new_user = User.objects.create_user('john', email, pwd) 
userProfile, created = UserProfile.objects.get_or_create(user=new_user, defaults={'useremailId': email}) 
+0

끝내기 ... 같은 대답 : – karthikr

+0

감사합니다. 나는 그것을 시도 할 것입니다 ... –