Django - passando argumentos extras na função upload_to callable

Eu sei que você pode usar o parâmetro upload_to para passar uma função que pode ser chamada para alterar dinamicamente um FileFied / ImageField, etc. em um modelo do Django.

A função chamada por upload_to é passada por duas variáveis, a instância do arquivo não salvo no banco de dados (instância) e o nome do arquivo da referida instância (nome do arquivo).

Se eu estiver usando um ImageField em um modelo junto com outros campos (Char, etc.), é possível obter os valores desses campos na mesma função que pode ser chamada.

por exemplo.

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)

É possível passar os valores de name (self.name?) Para format_badge_name?

questionAnswers(1)

yourAnswerToTheQuestion