I'm trying to have an image upload field, so I could upload multiple images per post. But it seems like it doesn't have a file upload field, let alone that would allow and save multiple files.
views.py
class PostsViewSet(ModelViewSet): queryset = Post.objects.all() serializer_class = PostSerializer permission_classes = [IsAuthenticated, IsOwnerOrReadOnly|IsAdminUser] filter_backends = (filters.DjangoFilterBackend,) filterset_class = PostFilter parser_classes = [JSONParser, MultiPartParser, FileUploadParser] renderer_classes = [JSONRenderer, BrowsableAPIRenderer]
serializers.py
class PostImageSerializer(serializers.ModelSerializer): class Meta: model = PostImage fields = ('image',)class PostSerializer(serializers.ModelSerializer): author = UserSerializer(read_only=True) comments = CommentSerializer(many=True, read_only=True, source='comment_set') likes_count = serializers.SerializerMethodField() images = PostImageSerializer(source='postimage_set', many=True, read_only=True) class Meta: model = Post fields = "__all__" def create(self, validated_data): validated_data["author"] = self.context["request"].user images_data = self.context.get('view').request.FILES print(validated_data) post = Post.objects.create(text=validated_data.get('text'), author=validated_data.get('author')) for image_data in images_data.values(): PostImage.objects.create(post=post, image=image_data) return post
models.py
class Post(models.Model): id = models.AutoField(primary_key=True) text = models.TextField(max_length=165) author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return f'{self.author} posts "{self.text}"'class PostImage(models.Model): post = models.ForeignKey(Post, on_delete=models.CASCADE) image = models.ImageField(upload_to='images/', blank=True)
and it looks like this
Where's error?