我试图在模型中创建一个字段,应该为注册用户存储图像。 此图像应重命名并存储在单独的用户目录中,如media/users/10/photo.jpeg
。Django在模型中存储用户图像
我搜查了很多,但仍然找不到如何干净而正确地做到这一点。在我看来,许多网站需要相同的功能,这应该是在Django的文档,但事实并非如此。
我试图在模型中创建一个字段,应该为注册用户存储图像。 此图像应重命名并存储在单独的用户目录中,如media/users/10/photo.jpeg
。Django在模型中存储用户图像
我搜查了很多,但仍然找不到如何干净而正确地做到这一点。在我看来,许多网站需要相同的功能,这应该是在Django的文档,但事实并非如此。
你想使用“upload_to”选项上ImageField
#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细节
您需要制作一个模型,该模型具有用户模型的外键,您可以在该模型中为用户设置image field。我不会推荐修改用户模型本身。
对不起,但问题不在于模型,而是关于如何存储图像。 – dragoon
您可以为任何FileField或Image字段创建动态上载路径。只需在模型中添加一个返回upload_to路径的函数即可。你可以在Django文档中找到一个例子:https://docs.djangoproject.com/en/1.3/ref/models/fields/#filefield – Brandon
不是最好的答案,但不值得投票... – nicorellius
我建议你看看django-photologue。它是一个Django的应用程序,所有的图像管理,上传和存储已经完成!
你正在为每个用户ID创建一个目录?为什么不'media/users/10.jpeg'?只是问:D –
因为可能有其他用户相关的内容来存储:) – dragoon
哦,我明白了!我觉得我遇到了类似的问题,让我看看我是否可以帮助 –