如何将图像上传的标题更改为 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)