Django rest framework: как создать файл из строки, передать его в сериализатор и сохранить?

Мне нужно преобразовать строку в файл, передать ее в сериализатор и сохранить.

Я делаю POST запрос из fetch в javascript:

fetch(`http://127.0.0.1:8000/api/v1/my-end-point/`, {
    method: 'POST',
    headers: {
        Authorization: `Token ${myToken}`
    },
    body: JSON.stringify(obj)
})
.then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log('error', error));

А в django у меня есть такая модель:

# models.py
class MyModel(models.Model):
    file = models.FileField(upload_to='static/directory/')
    field2 = models.CharField(max_length=100)
    field3 = models.CharField(max_length=100)
    user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    ...

сериализатор:

# serializers.py
class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = '__all__'

и вид:

# views.py
@api_view(['POST'])
@parser_classes([JSONParser,])
def gen(request, format=None):
    body_dict = json.loads(request.body)
    body_dict['user'] = request.user.id

    serializer = MyModelSerializer(data=body_dict)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    else:
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

POST запрос успешен, и я получаю тело в представлении django. Я вывел результат в консоль:

# print(body_dict)
{'file': "console.log('string to file test');", 'field2': 'str field2', 'field3': 'str field3', 'user': 2}

Содержимое файла, который я хочу сохранить, следующее:

console.log('string to file test');

Итак, как я могу преобразовать эту строку в объект файла, дать ему имя, передать его сериализатору и сохранить?

Вернуться на верх