Django Rest Framework. добавляет новый элемент списка в request.data, но получает новый элемент в виде двойного списка
Я создаю небольшой Django Rest Framework API с APIView. Он генерирует пост с тегами, которые получаются из БД, но если тегов нет или я хочу добавить новый тег, список имен тегов передается в полезную нагрузку и создает их вдоль поста, затем новые ID тегов добавляются в request.data['tags'].
Это полезная нагрузка, которую я передаю для новых тегов:
{
'title': 'Test Creating with new tags',
'new_tags': ['newest', 'newer']
}
Это почтовый метод:
def post(self, request, format=None):
""" Creates a Post instance """
if isinstance(request.data, QueryDict):
request.data._mutable = True
tmp_new_tags = request.data.get('new_tags', None)
if tmp_new_tags:
new_tags = request.data.pop('new_tags')
request.data.update({'tags': []})
for new_tag in new_tags:
tag = Tag.objects.create(name=new_tag, user=self.request.user)
request.data['tags'].append(str(tag.id))
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save(user=self.request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
вот request.data с существующими тегами, которые я ожидаю для новых тегов:
<QueryDict: {'title': ['Test Creating'], 'tags': ['1', '2']}>
Но я получил теги с двойным []
<QueryDict: {'title': ['Test Creating with new tags'], 'tags': [['3', '4']]}>
Это ответ.данные:
{'tags': [ErrorDetail(string="“['3', '4']” is not a valid UUID.", code='invalid')]}
Как я могу добавить один список вместо двойного списка к request.data['tags']?