Формат ввода и формат вывода в Django Rest Framework Seriaizer - PullRequest
0 голосов
/ 25 марта 2020

Привет, мой клиент api отправит мне массив символов вроде =>

["user1","user2","user3",...]

Поле моей модели имеет вид CharField, как =>

emplist = models.CharField(max_length=1000,null=False,blank=False)

Я хотел бы преобразовать этот массив в строка в сериализаторе и вывод строки в массив в сериализаторе. Могу ли я это сделать?

Как я могу обработать этот массив любым другим способом?

1 Ответ

1 голос
/ 25 марта 2020

Вы можете определенно справиться с парой настроек вашей Модели.

  1. Измените свое поле emplist, чтобы оно стало _emplist
_emplist = models.CharField(max_length=1000, null=False, blank=False)
Добавьте property методов к вашей модели для emplist
@property
def emplist(self):
    return self._emplist.split(',')
@emplist.setter
def emplist(self, value):
    if isinstance(value, list):
        self._emplist = ','.join(value)
    elif isinstance(value, str):
        self._emplist = value
Теперь в вашем сериализаторе просто добавьте ListSerializer поле к вам emplist поле
emplist = serializers.ListSerializer(child=serializers.CharField(allow_blank=False, allow_null=False))

И теперь оно отлично подойдет для этого случая.

...