上传图片时创建动态路径

0 投票
1 回答
735 浏览
提问于 2025-04-16 22:59

我正在尝试为用户上传图片创建一个动态路径。它的工作原理大致是这样的:

视图:

photo = Photo(...)
photo.save()

photo.original.save(filename, content)

模型:

album = models.ForeignKey(Album)
original = models.ImageField(upload_to="photos/%s/o" % str(album.id), max_length=200)

但是,当我尝试这样做时,Django却不允许。

Exception Value:    
'ForeignKey' object has no attribute 'id'

我该如何以这种方式访问ForeignKey对象的模型成员呢?

谢谢。

1 个回答

2

使用回调函数(可调用对象):https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.upload_to

def fancy_path(instance, filename):
    return 'fancy_path/file_%s.xml' % self.instance.album.id

original = models.ImageField(upload_to=fancy_path, max_length=200)

撰写回答