Django:获取auth用户foreignkey的用户名

时间:2014-04-11 20:00:46

标签: python django model foreign-keys

我想在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)

1 个答案:

答案 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)