2016-06-19 3 views
1

응용 프로그램과 관련된 특성을 가진 사용자 모델을 확장하고 싶습니다.이 경우 단순히 extAextB으로 대체합니다. 사용자 모델을 확장하기위한 모델을 만들었고 그 모델에 대한 간단한 serializer를 만들었습니다. 이제 추가 필드가있는 사용자를 만드는 방법을 모르겠습니다. 내가왔다장고 Rest 프레임 워크 사용자 모델 확장 방법, 사용자 생성 방법

class UserDetailsSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = User 
     fields = ('id', 'username', 'email', 'extA', 'extB') 

views.py

class UserDetailsView(APIView): 

    def get(self, request, id, format=None): 
     data = User.objects.get(id) 
     serializer_class = UserDetailsSerializer 
     return Response(serializer_class.data) 

models.py

class UserDetails(models.Model): 

    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    extA = models.IntegerField(null=True) 
    extB = models.IntegerField(null=True) 

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

serializers.py 셸을 통해 사용자를 생성합니다. 이처럼 : user = User.objects.create_user('John', '[email protected]', 'pass'). 이것은 잘 작동하지만 나는 UserDetailsView 객체를 생성하고 저장하는 방법을 모르겠습니다.

:

답변

2

이보기

user = User.objects.get(id=id) 
UserDetails.objects.create(id=user.id,user=user,extA=your_val_1,extB=your_val_2) 

을에 된 UserDetails를 만들려면 그리고 당신이 user.userdetails.extA로 참조 할 수 있어야합니다 도와주세요, user.userdetails.extB

+0

실행 이 명령은 내가 얻는 쉘에서 :'IntegrityError : UNIQUE constraint failed : app_userdetails.user_id'. 그 원인을 알 수 있습니까? – Warosaurus

+0

제공하는 ID가 이미 있음을 나타냅니다. UserDetails.objects.get (id = id) .delete()로 삭제하거나 거기에없는 ID를 제공하십시오. – dmitryro

관련 문제