2017-12-24 18 views
0

나는 이것을 이전에 해내었고 잘 동작했다. 내가 django2.0을 사용하고 있기 때문입니까?django 사용자 모델을 확장 할 때 속성 오류가 발생 했습니까?

class Profile(models.Model): 
    user = models.ForeignKey(User, on_delete=models.CASCADE) 
    .... 

@receiver(post_save, sender=User) 
def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     Profile.objects.create(user=instance) 

@receiver(post_save, sender=User) 
    def save_user_profile(sender, instance, **kwargs): 
     instance.profile.save() 

models.py 나는 오류 AttributeError: 'User' object has no attribute 'profile'를 얻을. 나는 그것을 얻지 못 하느냐?

답변

1

ForeignKey 프로필로 역방향으로 관련된 모든 정보에 액세스하려면 profile_set을 사용해야합니다.

def save_user_profile(sender, instance, **kwargs): 
    instance.profile_set.first().save() 

을하지만이 상황에서 당신이 더 나은 OneToOneField를 사용하는 거라고 생각 : 당신이 획득하고 저장해야 할 경우 먼저 관련 객체는이 시도 할 수 있습니다

user = models.OneToOneField(User, on_delete=models.CASCADE) 

는 하나의 관련 프로파일을 작성하고도하기 이 구문을 허용합니다 :

def save_user_profile(sender, instance, **kwargs): 
    instance.profile.save()