这是我的models.py
:
class Group_Photo(models.Model):
group_id = models.ForeignKey(Group)
photo = models.ImageField(upload_to="static/image/group/" + group_id + "/")
我想将图片上传到一个群组的目录。
例如,如果是group_id = 3
,
upload_to="static/image/group/3/"
我该怎么办?
抱歉,这是错误。
文件“/models.py”,第161行,在Group_Photo中 photo = models.ImageField(upload_to =“static / image / group /”+ group_id +“/”)TypeError:无法将'ForeignKey'对象转换为str 隐式
答案 0 :(得分:6)
upload_to
参数可以是函数as described in the documentation:
def group_based_upload_to(instance, filename):
return "image/group/{}/{}".format(instance.group.id, filename)
class Group_Photo(models.Model):
group = models.ForeignKey(Group)
photo = models.ImageField(upload_to=group_based_upload_to)
该函数有两个参数 - 附加文件的模型实例和文件的原始名称。它必须返回一个相对路径,文件将被保存。它将附加到MEDIA_ROOT
设置中定义的路径。
上面的示例使用基于组的数字ID的目录。您显然可以使用其他字段,例如使用slug(如果有的话)只需将instance.group.id
替换为instance.group.slug
。