【发布时间】:2014-10-31 11:24:57
【问题描述】:
所以我一直在尝试将文件上传到使用 DRF 的方法,但到目前为止没有运气。
我能够毫无问题地使用(FormParser, MultiPartParser,) 上传到ModelViewSet,但我真的需要在类似http://localhost:8000/api/v1/women/{pk}/upload_avatar/ 的地方使用它,我想先按id 过滤女人并上传到她的头像(这是多媒体模型的外键)。我尝试使用嵌套资源库,但没有成功。
到目前为止,我的模型视图集中有:
class WomenNativePassportViewSet(viewsets.ModelViewSet):
queryset = Women.objects.all()
serializer_class = WomenNativePassportSerializer
authentication_classes = (NoAuthentication,)
permission_classes = (AllowAny,)
parser_classes = (FormParser, MultiPartParser,)
@detail_route(
methods=['post', 'put', 'patch', 'get'], permission_classes=[AllowAny],
authentication_classes=[NoAuthentication], serializer_class=MultimediaSerializer,
parser_classes=(FormParser, MultiPartParser,)
)
def upload_avatar(self, request, pk=None, *args, **kwargs):
if 'POST' in request._method or 'PATCH' in request._method:
# Write code to save the file??
else:
multimedia = Multimedia.objects.filter(user_profiles_avatares__pk=pk)
page = self.paginate_queryset(multimedia)
serializer = self.get_pagination_serializer(page)
return Response(serializer.data)
我的模型:
class Women(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
avatar = models.ForeignKey(
'core.Multimedia', blank=True, null=True,
related_name='user_profiles_avatares'
)
class Multimedia(models.Model):
file = models.FileField(upload_to=upload_to, null=True, blank=True)
thumbnail = models.FileField(upload_to=upload_to, null=True, blank=True)
基本上我想知道这是否是我所采取的正确路径,如果是,我怎样才能正确地将上传的文件保存在模型中??
【问题讨论】:
标签: python django django-rest-framework