我知道这个问题已经被问过几次了,但我是 django 的新手,在文档或这里找不到它。我想将图片上传到一个类(class),名称应该与类(class)名称相同。
模型:
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
会这样做,但事实并非如此。
有人可以帮忙吗?
谢谢!
最佳答案
获取类名使用
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
函数中定义的。
关于python - 如何将图像上传的标题更改为 Django 类中的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662825/