Найти - Пользователи
Полная версия: загрузка файлов в отдельную папку для каждого объекта
Начало » Django » загрузка файлов в отдельную папку для каждого объекта
1
mc
подскажите, плз, как сделать чтобы загрузка файла в поле типа ImageField. например такого
    img = models.ImageField(upload_to='projects')
производилась бы для каждого экземпляра класса в свою директорию, название которой это номер этого объекта в БД.
И работало бы это и при редактировании объекта и при его создании
gruy
upload_to может указывать на функцию, а она уже возвращает необходимый путь.
mc
как в этой функции узнать ID ещё не вставленного объекта?
Enchantner
mc
никак, пока объект не вставлен - его не существует. Можешь, к примеру, использовать хэш (например, md5) каких-то уникальных данных модели или использовать модуль наподобие uuid для генерации уникальных идентификаторов.
mc
а объект instance или метод _set_pk_val() могут как то помочь?
mc
и при добавлении объекта с полем типа m2m система как то же получает pk ещё не созданного объекта. Можно этим как то воспользоваться и при загрузке файлов?
Sergei
mc
и при добавлении объекта с полем типа m2m система как то же получает pk ещё не созданного объекта.
Объект primary key получает при создании (т.е. при добавлении записи в базу). “Pk еще не созданного объекта” это какая-то непонятная сущность.
Может путаешь что-то?
mc
Sergei
Может путаешь что-то?
ну как путаю) когда добавляешь новый объект с полем m2m, в момент добавления в таблицу m2m добавляется же запись с pk этого нового добавляемого объекта, значение которого по идее в этот момент не известно. Так вот можно так же и с загружаемыми файлами поступить? Чтобы при добавлении объекта файлики бы записывались в папку название, которого pk объекта.
Sergei
mc
Sergei
Может путаешь что-то?
ну как путаю) когда добавляешь новый объект с полем m2m, в момент добавления в таблицу m2m добавляется же запись с pk этого нового добавляемого объекта, значение которого по идее в этот момент не известно.
Не. Сначала сохраняется объект (insert), после это pk этого объекта (который конечно теперь известен) добавляется в m2m. Никакой магии.
mc
так вопрос в том, что как сделать, чтобы после инсерта и когда уже известен pk, происходил а бы запись файликов в папочку /pk/.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB