Я хочу изменить содержимое файлов при их загрузке. У меня есть много моделей, использующих несколько FileFields, которым нужно такое поведение, поэтому я не хочу использовать сигналы или переопределять модель save()
в каждой модели. Я хочу создать пользовательский FileField для обработки этого поведения.
Я пытаюсь сделать это, расширяя FileField и переопределяя метод pre_save()
. Я могу прочитать содержимое файла, но когда я пишу в файл, он остается неизменным. Ниже приведен базовый пример c.
fields.py
from django.db.models import FileField
class CustomFileField(FileField):
def pre_save(self, model_instance, add):
file = super().pre_save(model_instance, add)
file.write(b'foo')
return file
models.py
from django.db import models
from fields import CustomFileField
class MyModel(models.Model):
my_field = CustomFileField(upload_to='files')