Доброго времи суток, сообщество!
Intro: являюсь новообращенным в линукс и питон. На данный момент практикуюсь пистаь на джанго. Решил отойти от написания бложика и написать "местный air bnb". Суть проста: админ заводит новую квартиру, с описанием, указанием координат и фотографиями интрерьера. Интерьер "подключен" как инлайн в квартире (многие-к-одному). Так же в интерьере есть фото интерьера, с отношением так же многие-к-одному.
Если сначала сохранить flat, потом создать и сохранить interior, а уже потом зааплоадить и сохранить фото, то все нормально
Проблема: Но если же попробовать создать flat и interior (не сохраняя) и загрузить фото и сохранить уже в конце, то система сначала попытается сохранить фото (в моем случае основанное на id квартиры и интерьера, котороые еще не записаны в БД), то в путь будет сформирован вида FlatNone/InteriorNone/...
Варианты встреченные на просторах:
1)по другому задавать названия файлов и не раскладывать по папкам. Перфекционист во мне сопротивляется такому решению.
2)Использовать presave. А именно до момента "стандартного" сохранения сохранить id квартиры, а потом id интерьера. Но получается, что в момоент "стандартного" сохранения будет еще одно обращения к БД. Тот же самый перфекционист бастует. Вот тут интересно услышать мнение сообщества, возможно я переусложняю.
3)Возможен еще один вариант: переписать метод сохранения, что бы сначала сохранялась модель flat, потом interior, а потом фото. Но на этой мысли у меня начианют дрожать колени и хочется посмотреть чей-нибудь пример и услышать совет. Самому вряд ли получится сделать нормальное переопределение.
Да, и извините, что код в репе выглядит не очень, иногда не удердиваюсь и коммичу так как есть, потому что "заработало!" ;)
С уважением.
Столкнулся однажды с той же проблемой. Но из лени решил последовать принципу Sorl Thumbnail, который формирует пути так:
/your_media_folder/b1/08/b108d1217ae0ec3d38c1e6c174c032ce.jpg