Форум сайта python.su
подскажите, плз, как сделать чтобы загрузка файла в поле типа ImageField. например такого
img = models.ImageField(upload_to='projects')
Офлайн
upload_to может указывать на функцию, а она уже возвращает необходимый путь.
Отредактировано (Сен. 28, 2011 15:52:39)
Офлайн
как в этой функции узнать ID ещё не вставленного объекта?
Офлайн
mc
никак, пока объект не вставлен - его не существует. Можешь, к примеру, использовать хэш (например, md5) каких-то уникальных данных модели или использовать модуль наподобие uuid для генерации уникальных идентификаторов.
Офлайн
а объект instance или метод _set_pk_val() могут как то помочь?
Офлайн
и при добавлении объекта с полем типа m2m система как то же получает pk ещё не созданного объекта. Можно этим как то воспользоваться и при загрузке файлов?
Офлайн
mcОбъект primary key получает при создании (т.е. при добавлении записи в базу). “Pk еще не созданного объекта” это какая-то непонятная сущность.
и при добавлении объекта с полем типа m2m система как то же получает pk ещё не созданного объекта.
Офлайн
Sergeiну как путаю) когда добавляешь новый объект с полем m2m, в момент добавления в таблицу m2m добавляется же запись с pk этого нового добавляемого объекта, значение которого по идее в этот момент не известно. Так вот можно так же и с загружаемыми файлами поступить? Чтобы при добавлении объекта файлики бы записывались в папку название, которого pk объекта.
Может путаешь что-то?
Офлайн
mcНе. Сначала сохраняется объект (insert), после это pk этого объекта (который конечно теперь известен) добавляется в m2m. Никакой магии.Sergeiну как путаю) когда добавляешь новый объект с полем m2m, в момент добавления в таблицу m2m добавляется же запись с pk этого нового добавляемого объекта, значение которого по идее в этот момент не известно.
Может путаешь что-то?
Офлайн
так вопрос в том, что как сделать, чтобы после инсерта и когда уже известен pk, происходил а бы запись файликов в папочку /pk/.
Офлайн