Загрузка нескольких изображений в одно поле с использованием django rest framework - PullRequest
0 голосов
/ 30 апреля 2020

Я создаю веб-сайт, на котором люди могут создавать посты с описанием чего-либо и загружать в него несколько изображений по мере их создания. Также, несмотря на то, что я хочу иметь возможность загружать множество изображений одновременно, я хочу, чтобы пользователи могли удалять одно изображение из сообщения. Моя главная проблема заключается в том, как будет настроена моя модель или вид, чтобы пользователи могли загружать несколько изображений в соответствии с планом. Я пытался установить множество отношений, как в моей модели ниже, но это просто не работает

class Photo(models.Model):
    '''
    photos model
    '''
    url = models.ImageField(blank=True, null=True)


class Post(models.Model):
    '''
    post model, allows users to post pictures and describe their feeling at the moment
    '''
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING, related_name="post_user")
    title = models.CharField(max_length=100)
    description = models.TextField(null=True)
    photos = models.ManyToManyField(Photo, related_name="assets")
    likers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="post_likers")
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

serializers.py

class PhotoSerializer(serializers.ModelSerializer):

    class Meta:
        model = Photo
        fields = ['pk', 'url']


class PostSerializer(serializers.ModelSerializer):
    user = serializers.SlugRelatedField(read_only=True, slug_field='slug')
    created_on = serializers.SerializerMethodField(read_only=True)
    photos = PhotoSerializer()

    class Meta:
        model = Post
        exclude = ['likers', 'updated_on', 'id']

views.py

class PostCreateView(generics.CreateAPIView):
    '''
    Create collaborations for people to show interests for it
    '''
    queryset = mod.Post.objects.all()
    serializer_class = srl.PostSerializer
    permission_classes = [IsAuthenticated]

    def create(self, request):
        serializer_context = {"request": request}
        serializer = self.serializer_class(
            data=request.data, 
            context=serializer_context
        )
        if serializer.is_valid():
            serializer.save(user=request.user)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
...