Я думаю, что при просмотре исходного кода вызов ImageFileField.save()
(на самом деле FileField.save()
из-за наследования) приводит к обновлению экземпляра (а именно строки БД), в котором хранится имя файла.
Это означает, что в вашем save
методе вы вызываете ImageFileField.save()
, который, в свою очередь, вызывает ваш метод сохранения, вызывая рекурсию.
Если вы хотите предотвратить это, прочитав исходный код, просто передайте save=False
в self.image.save
. Это сохранит данные файла на диск, но просто не будет save
данные экземпляра (строка БД). Однако в следующей строке вы сохраняете его, вызывая суперкласс, поэтому я думаю, что он будет сохранен в базе данных.
На самом деле похоже, что save=False
в методе save
был разработан, чтобы помочь в этом случае!