我想在localhost / media / $ username / image.jpg下保存一个jpg文件 其中$ username是foreignkey的用户名(用户模型)。
当在对象的内容中引用用户时,它返回如下内容:
<django.db.models.fields.related.ForeignKey>
因此,图像保存为:
images/<django.db.models.fields.related.ForeignKey>;/image.jpg
我希望它是:
images/sinr0202/image.jpg
其中sinr0202是用户名
model.py:
class Image(models.Model):
PRIVACY = (
('P', 'Public'),
('F', 'Friends'),
('O', 'Only Me'),
)
user = models.ForeignKey(User)
name = models.CharField(max_length=255)
content = models.FileField(upload_to='media/%s' % (user))
created = models.DateTimeField(auto_now_add=True)
privacy = models.CharField(max_length=1, choices=PRIVACY)
答案 0 :(得分:1)
你不能那样做,因为在执行类定义时没有用户。相反,将upload_to
设置为可调用的,将使用实例和文件名调用,并返回包含文件名的完整路径:
def content_file_name(instance, filename):
return os.path.join('media', instance.user.username, filename)
class Image(models.Model):
...
content = models.FileField(upload_to=content_file_name)