簡體   English   中英

Viewset在Django Rest Framework中'創建'自定義賦值

[英]Viewset 'create' custom assign value in Django Rest Framework

想通過使用輸入電子郵件設置CustomUser的用戶名,但在視圖中可以在何處進行自定義分配? 同時它也收到一個文件。

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

先感謝您。

@Anzel說的可行,但是如果你想在django-rest-framework中這樣做,你可以覆蓋CustomUserSerializercreate方法。 喜歡:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM