我正在尝试创建一个依赖于实例的模型字段(特别是外键的实例)。
示例:
class User(models.Model):
name = models.CharField()
...
class Entry(models.Model):
user = models.ForeignKey(User)
file = models.FileField(upload_to=user.name)
如您所见,我希望文件“upload_to”参数取决于用户。有一个简单的方法吗?
答案 0 :(得分:3)
upload_to
也可以是一个可调用的函数,例如一个函数,它将被调用以获取上传路径,包括文件名。
此callable必须能够接受两个参数,并返回一个Unix样式的路径(带有正斜杠)以传递给存储系统。
def _upload_to(instance, filename):
return str(instance.user.name)
class Entry(models.Model):
user = models.ForeignKey(User)
file = models.FileField(upload_to=_upload_to)