Я пытаюсь создать конечную точку для загрузки изображений (используя почтальона) в определенную папку, используя django rest framework.Это мои настройки для папки,
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Это моя модель,
class UserMedia(models.Model):
user = models.OneToOneField(User, related_name='medias', on_delete=models.CASCADE, )
profile_image_web = models.FileField(null=True)
profile_image_android = models.FileField(null=True)
profile_image_ios = models.FileField(null=True)
thumbnail = models.FileField(null=True)
Это Сериализатор,
class UserMediaSerializer(serializers.ModelSerializer):
class Meta:
model = models.UserMedia
fields = (
'profile_image_web', 'profile_image_ios', 'profile_image_android', 'thumbnail',
)
Это API,
class CreateUpdateUserMedia(views.APIView):
parser_classes = (MultiPartParser, FormParser)
def post(self, request, **kwargs):
serializer = UserMediaSerializer(request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Теперь, когда я пытаюсь загрузить ОДНОЕ изображение, соответствующее одному из полей, используя POSTMAN, я получаю эту ошибку.
'Cannot call `.is_valid()` as no `data=` keyword argument was '
AssertionError: Cannot call `.is_valid()` as no `data=` keyword argument was passed when instantiating the serializer instance.
Что совершенно понятно, но я незнаете, как это исправить.
Вот мои вопросы,
Как правильно загрузить изображения с помощью django rest framework.
Я не ожидаю, что этот API будет вызываться с 4 изображениями вместе, но 4 раза, используя одно изображение за раз, как мне передать соответствующее имя и соответственно изменить сериализатор.
Как указать подпуть к корневому каталогу мультимедиа.
Наконец, я хочу, чтобы сериализатор отображал полный URL-адрес изображения, как мне это сделать?