2015-01-04 2 views
4

CustomUser의 사용자 이름을 입력 이메일을 사용하여 설정하고 싶지만보기에서 사용자 정의 할당을 수행 할 위치는 무엇입니까? 동시에 파일을 수신합니다.뷰셋 Django Rest 프레임 워크에서 사용자 지정 값을 지정합니다.

는 Models.py

class CustomUser(AbstractUser): 
    avatar = models.ImageField(max_length=None, upload_to='avatar', blank=True) 

Serializers.py

class CustomUserSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = CustomUser 
     fields = ('id', 'first_name', 'last_name', 'email', 'password', 'avatar', 'groups') 

Views.py

class CustomUserViewSet(viewsets.ModelViewSet): 

    queryset = CustomUser.objects.all() 
    serializer_class = CustomUserSerializer 

는 ADVAN에 감사합니다 ce. @Anzel 일하는 것이 있지만 장고 - 나머지 프레임 워크에서 작업을 수행하려는 경우 당신이 당신의 CustomUserSerializercreate 메소드를 오버라이드 (override) 할 수 말했다 무엇

+0

모델의 ** 저장 ** 메소드로 ** 사용자 이름 **을 채우거나 ** 사전 저장 ** 및/또는 ** post_save **를 사용하여 장고 모델과 관련되어야합니다. 신호. – Anzel

답변

3

. Like :

class CustomUserSerializer(serializers.ModelSerializer): 

    groups = serializers.PrimaryKeyRelatedField(many=True, read_only=True) 

    def create(self, validated_data): 
     user = CustomUser.objects.create_user(
      username =validated_data['email'], # HERE 
      email  =validated_data['email'], 
      password =validated_data['password'], 
      first_name =validated_data['first_name'], 
      last_name =validated_data['last_name'], 
      avatar  =validated_data['avatar'], 
     ) 

     user.groups = validated_data['groups'] 
     return user 

    class Meta: 
     model = CustomUser 
     fields = (
      'id', 
      'first_name', 
      'last_name', 
      'email', 
      'password', 
      'avatar', 
      'groups' 
     ) 
+0

감사합니다. –

+0

하나의 질문입니다. 따라서 "groups"필드가있는 경우 create 메소드에서 어떻게 지정해야합니까? 내가 "groups = validated_data [ 'groups']"로 지정할 때 오류가 발생합니다. –

+0

@CYChong, 어떻게 POST 그룹을합니까? 요청시 그룹의 'id'를 포함합니까? –

관련 문제