Поскольку FileField по умолчанию имеет значение null = True, пусто = True, существует возможность дважды сохранить модель, сначала удалив значение файла (= Нет), сохранив, а затем добавив значение файла ( который был ранее сохранен во временной переменной), и сохраните снова.
Вот код
# this method goes in your model
def save(self, *args, **kwargs):
# ignoring the double save if this is an update or if there is no files
if self.pk or not self.file:
return super(MyModel, self).save(*args, **kwargs)
old_file = self.file._file
self.file = None
super(MyModel, self).save(*args, **kwargs)
self.file = old_file
return super(MyModel, self).save(*args, **kwargs)
Ну, конечно, это приведет к двойному запросу к базе данных при создании новой записи, но любое другое решение, которое я мог бы предложить, требовало сделать хотя бы одно попадание в базу данных (ключ основан на уникальном ограничении). , ключ на основе даты создания и т. д.).
Надеюсь, это поможет!