上传照片到Django Rest Fram

2024-06-26 04:50:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有我的模型和诸如此类的东西,当我试图上传图像时,我得到的是:

'PhotoSerializer' object has no attribute '_committed

我的观点:

class UploadPhoto(APIView):
    #authentication_classes = (TokenAuthentication,)
    permission_classes = ()#(IsAuthenticated,)

    def put(self, request, username):

        user = User.objects.get(username = username)
        userprofile = UserProfile.objects.get(user= user)
        photo = PhotoSerializer(data = request.data)
        userprofile.photo = photo
        userprofile.save()
        return Response(status= status.HTTP_200_OK)

序列化程序:

class PhotoSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserProfile
        fields = (
            'photo',
        )

至少是我的模特

class UserProfile(models.Model):
    """
    User Profile

    """
    user = models.OneToOneField(User, related_name='userprofile')

    GENDER_CHOICES = (
        ('M', 'Male'),
        ('F', 'Female'),
    )
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='M')

    phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$',message="Phone must be entered in the format: '+999999999'. Up 15 digits allowed.")
    #The Field on DataBase after check if it's a valid Phone Number.
    # validators should be a list
    phone_number = models.CharField(validators=[phone_regex], max_length=15, blank=True) 
    photo = models.ImageField(upload_to = 'photos/', null = True)

    driver_passenger = models.BooleanField(default=True)
    rides_given = models.IntegerField(default=0) 
    rides_taken = models.IntegerField(default=0)
    reputation = models.IntegerField(default=0)

我尝试了一些上传照片的选项,但无法实现,因此我感谢您的帮助(:


Tags: truedefaultmodelsusernamephoneclassregexclasses
1条回答
网友
1楼 · 发布于 2024-06-26 04:50:52

好吧,经过一点尝试,我可以用这个上传图片 希望代码是有用的

视图.py

class UploadPhoto(APIView):
    #authentication_classes = (TokenAuthentication,)
    permission_classes = ()#(IsAuthenticated,)

    def put(self, request, username):

        user = User.objects.get(username = username)
        userprofile = UserProfile.objects.get(user= user)
        photo = PhotoSerializer(userprofile,data = request.data)
        photo.is_valid(raise_exception=True)
        photo.save()

        return Response(status= status.HTTP_200_OK)

相关问题 更多 >