【问题标题】:Django store user image in modelDjango 在模型中存储用户图像
【发布时间】:2011-11-18 22:12:33
【问题描述】:

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

我进行了很多搜索,但仍然找不到如何干净正确地进行操作。在我看来,许多网站都需要相同的功能,这应该在 django 文档中,但事实并非如此。

【问题讨论】:

  • 您正在为每个用户 ID 创建一个目录?为什么不media/users/10.jpeg?只是问:D
  • 因为可能还有其他与用户相关的内容要存储:)
  • 哦,我明白了!我想我遇到过类似的问题,让我看看是否可以提供帮助

标签: django django-models


【解决方案1】:

您想在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 详细信息下

【讨论】:

  • 酷,这实际上确实将文件保存到正确的位置,但是当我在模板中使用 {{ user.profile_image }} 时,由于某种原因它给出了 /users/users/40/photo.png 而不是 /media/users/40/photo.png
  • models.ForeignKey(User, unique=True) 应该是 models.OneToOneField(User)
【解决方案2】:

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

更多关于:http://code.google.com/p/django-photologue/

【讨论】:

    【解决方案3】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2019-01-01
    • 2020-06-27
    • 2021-05-23
    • 2022-11-24
    相关资源
    最近更新 更多