Я пытаюсь добавить функциональность для загрузки массива строк даты в форме
Первоначально мы отправляли данные сообщения с помощью JSON, и отправка массивов данных работала, однако, когда мы переключились на использование данных формы, чтобы упростить загрузку изображения, у нас начались проблемы с типами массивов.
поскольку данные формы должны быть отправлены с использованием строкового типа, я преобразовал массив строки даты с помощью JSON.stringify ()
const myForm = new FormData();
myForm.set("date_strings", JSON.stringify(dateStrings));
когда я отправляю myForm в свой Django + DRF API, он отвечает
{
"date_strings": [
"Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z]."
],
"status_code": 400
}
В Postman я проверил, что отправка одной строки даты работает, но когда я отправляю массив строк, я получаю ту же ошибку.
Я считаю, что мой Django API проверяет, действителен ли request.data, видит, что date_strings является строкой JSON, а затем отвечает с ошибкой 400.
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
PostViewsetrequest.data['publish_dates'], потому что он не изменяемый, и я видел несколько советов, что вам не следует пытаться копировать или изменять данные запроса в наборе просмотра, потому что это небезопасно.преобразовать строку JSON в массив в сериализаторе
date_strings формируются и создаются как отдельная модель PublishDate в методе create,
class MySerializer(MyChildSerializer):
date_strings = serializers.ListField(child=serializers.DateTimeField(), min_length=1, max_length=100, write_only=True)
Как я могу отправить / принять данные формы в мой Django + DRF API, если один атрибут представляет собой массив строк даты и времени?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я осознал проблему и нашел решение. Поскольку MySerializer установил date_strings как ListField, он поступал как строка и отклонялся как неверный запрос.
изменяя модель date_strings на CharField, MySerializer запускает методы проверки и создания. Теперь мне нужно найти способ преобразовать JSON date_strings обратно в массив в методе создания сериализатора, но я решил проблему API 400.
MySerializer теперь выглядит так:
class CreatePostSerializer(SocialVeilModelSerializer):
publish_dates = serializers.CharField(max_length=2000)