我正在尝试在模型中创建一个字段,该字段应该为注册用户存储图像。
此图像应重命名并存储在单独的用户目录中,如media/users/10/photo.jpeg
。
我经常搜索,但仍然无法找到如何干净利落地完成任务。在我看来,许多网站需要相同的功能,这应该在django docs中,但事实并非如此。
答案 0 :(得分:45)
您想在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详细信息
下文档中的一小部分内容答案 1 :(得分:1)
我建议你研究一下django-photologue。它是一个django应用程序,具有所有图像管理,上传和存储已经完成!
答案 2 :(得分:0)
您需要创建一个具有User模型外键的模型,您可以在其中为用户设置image field。我不建议修改用户模型本身。