我知道这已被问过几次,但我是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
会这样做,但事实并非如此。
有人可以帮忙吗?
谢谢!
答案 0 :(得分: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
函数中定义。