Django: динамическая папка для хранения моделей.ImageField

#python #django #dynamic #directory #storage

#python #django #динамический #каталог #Хранение

Вопрос:

В моей модели есть ImageField, в котором я хочу динамически сохранять URL-адрес изображения в зависимости от переменной сеанса пользователя. Воображаемый, подобный этому:

 logo = models.ImageField(null=True, upload_to = 'empresas/' codEmp '/logo/')
  

А переменная var codEmp — это переменная сеанса:
request.session['codEmp']

Поэтому, если кодовым кодом пользователя является, например, ‘McDonalds’, он должен сохранить следующий путь: ’empresas/McDonalds/logo/imaginary_picture.jpg ‘.

Я пытался с помощью инициализации, но я не могу закончить это, и я не уверен, что это сработает.

 class Empresa(models.Model):
    def __init__(self, filter_on, *args, **kwargs):
        super(Empresa, self).__init__(*args, **kwargs)
        codEmp = filter_on
        logo = models.ImageField(null=True, upload_to = 'empresas/' codEmp '/logo/')
  

Я пытался сделать это в ModelForm, но, похоже, у forms.ImageField нее нет upload_to атрибута.

Ответ №1:

upload_to Параметр может быть вызываемым, ожидается, что он примет 2 параметра: экземпляр и имя файла. Смотрите здесь.