如何将图像上传的标题更改为 django 类中的名称

Posted

技术标签:

【中文标题】如何将图像上传的标题更改为 django 类中的名称【英文标题】:how to change the title of an image upload to a name in a class in django 【发布时间】:2015-10-18 05:06:55 【问题描述】:

我知道这已被问过几次,但我是 django 的新手,在文档或此处找不到。我想将图像上传到班级,并且名称应与班级名称相同。

型号:

import os 

def upload_to_company(instance, filename):
    blocks = filename.split('.')
    ext = blocks[-1]
    filename = "%s.%s" % (Cars.name, ext)
    instance.title = blocks[0]
    return os.path.join('media/', filename)

    class Cars(models.Model):
        image_file = models.ImageField(upload_to=upload_to_company, null=True, blank=True)
        name = models.CharField(max_length=200)

如何获得汽车类的名称?我以为Cars.name 会这样做,但事实并非如此。

有人可以帮忙吗?

谢谢!

【问题讨论】:

【参考方案1】:

获取类的名称使用

Cars.__name__

如果你通过一个对象(例如camaro = Cars()),使用

camaro.__class__.__name__

如果您想将图像命名为依赖于其他模型属性之一(例如name

def upload_to_company(instance, filename):
    if hasattr(instance, 'imgpath'):
        if os.path.exists(instance.imgpath):
            os.remove(instance.imgpath)
    blocks = filename.split('.')
    ext = blocks[-1]
    filename = "%s.%s" % (instance.name, ext)
    instance.title = blocks[0]
    instance.imgpath = os.path.join('media', filename)
    return instance.imgpath

注意:这将始终替换现有文件。

最后,正确缩进:Cars 类似乎是在 upload_to_company 函数中定义的。

【讨论】:

谢谢!但现在我得到了类名,比如 CARS 而不是用户输入的品牌?所以用户有一个类别名称汽车。他添加了一个名称为camero的类别,然后他上传的图片应该使用该名称? 请说明您打算做什么。你的问题很清楚,是关于班级的。如果你现在想要汽车模型,那么你应该采取不同的行动 抱歉,我想我的问题格式错误。正是我想要车型名称,所以我想要汽车类的name属性的值 让我们continue this discussion in chat。 您好,我想删除旧图怎么办?我只想为每辆车保存一张图片

以上是关于如何将图像上传的标题更改为 django 类中的名称的主要内容,如果未能解决你的问题,请参考以下文章

将 URL 更改为文件(Parse.com 使用 Javascript CloudCode)

如何在上传时调整图像大小yii2

如何将链接文本更改为 HTML 中的图像

如何将图像从不规则矩形更改为矩形?

如何使用带有c ++的opencv库将下图中的黑色像素更改为红色像素

如何将 Django 日期格式更改为 dd/mm/yy?