Django - передача дополнительных аргументов в вызываемую функцию upload_to

Я знаю, что вы можете использовать параметр upload_to для передачи вызываемой функции для динамического изменения FileFied / ImageField и т. Д. В модели Django.

В функцию, вызываемую upload_to, передаются 2 переменные, экземпляр не сохраненного в базе данных файла (экземпляр) и имя файла указанного экземпляра (имя файла).

Если я использую ImageField в модели вместе с другими полями (Char и т. Д.), Можно ли получить значения из этих полей в той же вызываемой функции.

например.

class Badge(models.Model):

  def format_badge_name(instance, filename):
    _filetype = os.path.splitext(filename)[1]
    _category = 'foo'
    _name = os.path.splitext(filename)[0]
    _filename = "%s-%s-%s%s" % (_category, _name, 'private', _filetype)

    return "badges/%s" % _filename

  name = models.CharField(max_length=16, help_text="Name for Badge")
  file = models.ImageField(upload_to=format_badge_name)

Можно ли передать значения из имени (self.name?) В format_badge_name?

 Ignacio Vazquez-Abrams30 мая 2012 г., 05:36
Что вы пытаетесь сделать?

Ответы на вопрос(1)

Решение Вопроса

instance переменнаяBadge() пример. Вы можете получить доступ к его свойствам как обычно

def format_badge_name(instance, filename):
    instance.name
    instance.file
    ...

Вы могли бы назватьinstance 'self'и это может быть легче понять:

def format_badge_name(self, filename):
    self.name
    self.file
    ...

Ваш ответ на вопрос