[英]Send related image to Django Rest Framework
大家好,阅读这篇文章的人。 我遇到了这样的问题。 所以,首先我有这样的模型布局
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
description = models.TextField(max_length=4000, null=True)
liked_profiles = models.ManyToManyField('self', related_name='likes')
disliked_profiles = models.ManyToManyField('self', related_name='dislikes')
class Image(models.Model):
profile = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='images', max_length=6)
path = models.ImageField(upload_to='profile_images')
所以,我想创建一个 drf 端点,它将接收某种图像,创建它,并链接到配置文件 model。 但我真的不确定如何实现这一点(我想用 django 视图集来实现)。
主要目标不是提供另一个视图集 class(如 ImageViewSet),而是使其成为 ProfileViewSet 的一部分。 所以现在我有了这样的视图集(包含更新描述的方法)
class ProfileViewSet(viewsets.ModelViewSet):
queryset = Profile.objects.all()
permission_classes = (IsAuthenticated, )
@action(detail=True, methods=['PUT'])
def set_description(self, request, pk=None):
profile = self.get_object()
serializer = DescriptionSerializer(data=request.data)
if serializer.is_valid():
profile.description = request.data['description']
profile.save()
else:
return Response(serializer.errors,
status=status.HTTP_400_BAD_REQUEST)
我想向它添加类似“add_image”方法的东西。
我该如何实现它,它实际上是否可能(否则你可以帮助我用另一个视图集来实现它)? 我将非常感谢您的帮助
你可以做类似于你的 set_description 的事情:
@action(
detail=True,
methods=["post"],
serializer_class=ImageSerializer, # write your custom serializer, override save() method and save images from self.context["request"].FILES.items()
)
def create_image(self, request, pk=None):
instance = self.get_object()
serializer = self.get_serializer(instance, data=self.request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.