У меня есть приложение Django с полем изображения (пользовательский тип ThumbnailImageField), которое автоматически генерирует путь к файлу для изображения на основе заголовка, типа и страны элемента, к которому прикреплено изображение (upload_ to = get_ image_path). Вот как это сделать:
def get_image_path(instance, filename):
dir = 'images'
subdir = instance.get_type_display()
sub_subdir = 'other'
if instance.country:
sub_subdir = instance.country.name
name = instance.name
extension = filename.split('.')[-1]
return "%s/%s/%s/%s.%s" % (dir, subdir, sub_subdir, name, extension)
Это прекрасно работает, за исключением одной ситуации: когда я переименовываю элемент, меняю страну, из которой он находится, или меняю категорию, в которой он находится, изображение становится мертвой ссылкой, потому что оно генерирует новый путь к изображению без перемещения оригинального файла.
Итак, волшебный вопрос:
Есть ли в Django какая-то функция сохранения, которую я могу подключить и переопределить, что позволит мне получить исходный объект и предложенные значения и сравнить их, чтобы я знал, где был путь к изображению и куда он должен идти (а затем использовать эту информацию для перемещения / переименования в коде)?