Удалить префикс MEDIA_URL из сериализованной модели - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть проект django-restframwork, в котором я установил MEDIA_URL в settings.py файле. проблема заключается в том, что при сериализации модели я получаю имя файла с префиксом media .

Вот ответ, который я получаю

{
"employees": [
    {
        "id": 1,
        "name": "neki",
        "doc": "/media/simple-nature-wallpapers-free-download-for-desktop-45.jpg"
    }
  ]
}

Но я хочу получить ответ без media с таким префиксом

{
"employees": [
    {
        "id": 1,
        "name": "neki",
        "doc": "simple-nature-wallpapers-free-download-for-desktop-45.jpg"
    }
  ]
}

У меня есть два решения. У них обоих есть некоторые проблемы

  1. Я могу удалить MEDIA_URL из setting.py файла (проблема в том, что я не могу получить доступ к файлу из хранилища)
  2. Или я могу сохранить имя файла как models.CharField(). (Проблема в том, что я не могу автоматически сохранить файл из ModelSerializer)

Итак, мой Вопрос - как решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Если вы сохраните свой сериализатор и просмотры, я могу помочь вам лучше. но короткий ответ: если вы отправите этот ответ методом post, вы можете переопределить метод create в ваших представлениях (если вы используете generics.CreateAPIView). если получить, переопределить, получить и ... а затем измените свой ответ, как вы хотите. Вы получаете доступ к своим данным ответа там.

поделитесь своим мнением и сериализатором для более ясного ответа.

0 голосов
/ 06 ноября 2018

Переопределить to_represenataion() метод сериализатора

class YourSerializer(.....):
    # your code
    <b>def to_representation(self, instance):
        rep = super(YourSerializer,self).to_representation(instance)
        try:
            rep['doc'] = rep['doc'].split('/')[-1]
        except KeyError:
            return rep
        return rep</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...