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');
Итак, как я могу преобразовать эту строку в объект файла, дать ему имя, передать его сериализатору и сохранить?