Загрузка и извлечение изображений в MongoDB Atlas с помощью Django Rest (СПРАВКА)

#django #mongodb #django-rest-framework #mongodb-atlas

Вопрос:

У меня возникли проблемы с загрузкой изображений в Mongo и их извлечением с помощью Django Rest. Я использую GridFS и просто пытаюсь загрузить фотографию профиля пользователя.Так выглядит мой api после загрузки моего изображения

Он не показывает мне жизнеспособную ссылку для доступа к нему. Это просто по какой-то причине возвращает меня к представлению создания. Я проверил свою страницу Атласа Монго, и, похоже, изображения сохраняются. Как я могу правильно восстановить свои изображения?

Вот код, который я написал:

 settings.py
BASE_URL = 'http://127.0.0.1:8000/'

models.py

grid_fs_storage = GridFSStorage(collection='myfiles', base_url=''.join([settings.BASE_URL, 'myfiles/']))
class ProfilePic(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    profile_pic = models.ImageField(upload_to='users',
        default='avatar.png',storage=grid_fs_storage)



serializers.py
class ProfilePicSerializer(serializers.ModelSerializer):
    class Meta:
        model = models.ProfilePic
        fields = ('id', 'profile_pic')



views.py

class ProfilePicView(viewsets.ModelViewSet):
    authentication_classes = (authentication.TokenAuthentication,)
    permission_classes = (permissions.IsAuthenticated,)
    queryset = models.ProfilePic.objects.all()
    serializer_class = ProfilePicSerializer
 

Ответ №1:

может быть, тебе стоит попробовать что-то вроде этого:

 class ProfilePic(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    profile_pic = models.ImageField(upload_to='users',
        default='avatar.png',storage=grid_fs_storage)

    def get_picture(self, obj):
        return obj.profile_pic.url