Django在模型中存储用户图像

时间:2011-11-18 22:12:33

标签: django django-models

我正在尝试在模型中创建一个字段,该字段应该为注册用户存储图像。 此图像应重命名并存储在单独的用户目录中,如media/users/10/photo.jpeg

我经常搜索,但仍然无法找到如何干净利落地完成任务。在我看来,许多网站需要相同的功能,这应该在django docs中,但事实并非如此。

3 个答案:

答案 0 :(得分:45)

您想在ImageField

上使用“upload_to”选项
#models.py
import os

def get_image_path(instance, filename):
    return os.path.join('photos', str(instance.id), filename)

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    profile_image = ImageField(upload_to=get_image_path, blank=True, null=True)

这是直接来自我的项目的代码。上传的图片转到/MEDIA_ROOT/photos/<user_id>/filename

根据您的需要,只需将“照片”字符串更改为def get_image_path

中的“用户”即可

以下是FileField详细信息

下文档中的一小部分内容

答案 1 :(得分:1)

我建议你研究一下django-photologue。它是一个django应用程序,具有所有图像管理,上传和存储已经完成!

有关详情:http://code.google.com/p/django-photologue/

答案 2 :(得分:0)

您需要创建一个具有User模型外键的模型,您可以在其中为用户设置image field。我不建议修改用户模型本身。