使用 ModelForm 字段作为 upload_to 的参数的正确方法是什么?

What is the appropriate way to use a ModelForm field as an argument to upload_to?

我有一个 ModelForm,其中两个字段是姓氏和名字。我还有一个用于文件上传的文件字段。由于许多不同的人正在上传多个文件,我想根据文件的名称将这些文件分组到一个目录中。

我一直在尝试使用自定义格式的字符串来执行此操作,但到目前为止我收到一个错误,提示有 not enough arguments for format string,我想知道这是否与表单尚未保存。

我基于表单字段生成文件名的尝试是:

def filename_path(instance, filename):
     return os.path.join('applicant_documents/%s_%s/%s' % instance.last_name, instance.first_name, filename)

我模型中的字段定义为:

documents = models.FileField(upload_to=filename_path)

我是做错了什么,还是这不可能?

如错误提示,您需要提供一个元组来代替字符串格式化。

def filename_path(instance, filename):
     return os.path.join('applicant_documents/%s_%s/%s' % <b>(instance.last_name, instance.first_name, filename)</b>)
</pre>