Имя файла преобразуется из юникода в ascii
У меня есть модель django с unicode FileField, которую я сериализую с помощью django rest framework, и значения FileField преобразуются в ascii или другую кодировку, которая не содержит многих символов из имени файла.
Все остальные поля, содержащие символы Unicode, остаются неизменными, преобразуется только поле файла. Я не видел ничего об этом в документации или в stack overflow.
Я пробовал явно указывать кодировку сериализатора, например: # -- coding: utf-8 -- #, но ничего не изменилось. Нужно ли мне самостоятельно объявить поле в сериализаторе с правильной кодировкой? Если да, то как это сделать?
Вот сериализатор:
class UploadModelSerializer(serializers.ModelSerializer):
class Meta:
model = models.DatauploadUploadmodel
fields = '__all__'
Вот модель:
class DatauploadUploadmodel(models.Model):
table = models.CharField(max_length=50)
file = models.FileField(upload_to='upload_files/', max_length=200 )
user_id = models.IntegerField()
is_new_table = models.BooleanField(blank=True, null=True)
skiprows = models.IntegerField(blank=True, null=True)
status_description = models.CharField(
max_length=100, default="Feldolgozásra vár", blank=True, null=True)
status = models.CharField(max_length=100, blank=True, null=True)
upload_timestamp = models.DateTimeField()
mode = models.TextField()
class Meta:
managed = False
db_table = 'dataupload_uploadmodel'
Вот такой вид:
class UploadmodelList(generics.ListCreateAPIView):
queryset = models.DatauploadUploadmodel.objects.all()
serializer_class = serializers.UploadModelSerializer
permission_classes = [AuthorAllUser]
Вот как выглядит имя файла в api:
k%C3%B6lts%C3%A9gek-2022-09-091.xlsx
А вот как это выглядит в базе данных:
költségek-2022-09-09.xlsx