@细节路由:对象没有属性-Django Rest框架

@细节路由:对象没有属性-Django Rest框架,django,django-rest-framework,Django,Django Rest Framework,我得到一个关于@detail\u路线的问题。希望你们能帮忙 这是我的视图集。我使用装饰器来导入详细信息 我的视图集: class PhotoUpdateSerializer(ModelSerializer): class Meta: model = Photo fields = [ 'image', 'is_public', 'caption' ] class Uplo

我得到一个关于@detail\u路线的问题。希望你们能帮忙

这是我的视图集。我使用装饰器来导入详细信息

我的视图集:

class PhotoUpdateSerializer(ModelSerializer):
    class Meta:
        model = Photo
        fields = [
            'image',
            'is_public',
            'caption'
        ]
class UploadAvatarPhotoAPIView(ReadOnlyModelViewSet):
    serializer_class = PhotoUpdateSerializer
    queryset = Photo.objects.all()

    @detail_route(methods=['POST'])
    def upload_avatar(self, request, username):
        avatarqs = Photo.objects.create(
            user=self.request.user,
            caption=self.caption,
            image=self.image,
            is_public=self.is_public
        )
        serializer = PhotoUpdateSerializer(avatarqs)
        return Response(serializer.data)
错误:
“UploadAvatarphotopiView”对象没有属性“caption”

我认为有三行是错误的:

caption=self.caption,
image=self.image,
is_public=self.is_public

您需要
request.POST
来获取数据

caption = request.POST['caption']
is_public = request.POST['is_public']
和图像数据

image=request.FILES.get('image')
更新

您需要在表单标记中将
enctype
设置为
multipart/form data
,以便在上载文件时在
request.FILES
中获取数据

<form action="" method="post" enctype="multipart/form-data">

您需要
请求。POST
获取数据

caption = request.POST['caption']
is_public = request.POST['is_public']
和图像数据

image=request.FILES.get('image')
更新

您需要在表单标记中将
enctype
设置为
multipart/form data
,以便在上载文件时在
request.FILES
中获取数据

<form action="" method="post" enctype="multipart/form-data">


谢谢!我成功了!投票给yaSorry,我在发布内容类型:
Content\u Type=ContentType.objects.get(model='photos'),
时遇到了这个错误。问题:
int()参数必须是字符串或数字,而不是“照片”
希望您的帮助!执行类似于
ContentType.objects.get\u for\u model(Photo)
,检查
int()参数必须是字符串或数字,而不是“Photos”
的操作也会出现此错误。@FeedGit您可以单独问这个问题,肯定有人会帮助您的。谢谢!我成功了!投票给yaSorry,我在发布内容类型:
Content\u Type=ContentType.objects.get(model='photos'),
时遇到了这个错误。问题:
int()参数必须是字符串或数字,而不是“照片”
希望您的帮助!执行类似于
ContentType.objects.get\u for\u model(Photo)
,检查
int()参数必须是字符串或数字,而不是“Photos”
的操作也会出现此错误。@FeedGit您可以单独问这个问题,肯定有人会帮助您的。