-
Нужно создать модель с динамическим FilePathField, параметр path которого будет разным для каждого инстанса модели.
class Project(models.Model):
dir_name = models.CharField()
main_file = models.FilePathField(path = "/home/projs/%s/" % self.dir_name)
Этот пример конечно же не работает :-) Возможно ли сделать так чтобы при апдейте объекта (в админке) менялся параметр path в зависимости от dir_name? Может есть какой-то хук на стадии "получения" объекта?
Спасибо. -
Перегрузить метод save:
def save(self):
self.main_file = "/home/projs/%s/" % self.dir_name
super(Project, self).save() -
Если в upload_to передать callable, то в этот callable прекрасным образом приедет instance модели.
-
Нужно чтобы это происходило на стадии получения существующего объекта, а не после сохранения.
У каждого проекта есть своя папка, и в этой папке для каждого проекта нужно выбрать один (главный) файл. Поле FilePathField позволяет выбрать файл на сервере из какой-то захардкоженой папки, но я бы хотел ограничивать выбор файла - динамически - только той папкой, название которой совпадает с аттрибутом dir_name.models.FilePathField(path = "/home/projs/%s/" % self.dir_name)
То есть, если proj1.dir_name равняется 'vasya', а proj2.dir_name - 'petya', то параметр path будет у proj1 - "/home/projs/vasya/", а у proj2 - "/home/projs/petya/". -
Упс, с FileField попутал. Тогда, наверное, только js-ом (как для любой другой динамики) фильтровать список на клиенте и дописать в форме clean, чтобы он не пускал "неправильные" файлы.
-
Действительно, по другому никак. Спасибо, Аркадий.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

